D. *_*her 5 editor cmake visual-studio
我正在尝试使用Visual Studio作为编辑器来浏览GitHub上的大型开源项目.目录结构如下
/module1/include/
/module1/src/
/module2/include/
/module2/src/
...
Run Code Online (Sandbox Code Playgroud)
和构建由CMakeLists.txt维护.
如果我出于某种原因坚持使用Visual Studio作为编辑器(例如,良好的IntelliSense支持),那么最佳做法是什么?
我尝试了"New - Project from Existing Code".它产生丑陋的项目结构,其中所有*.cpp文件都在源文件过滤器下,而我仍然需要手动指定一堆/*/include /目录.
我试图实际使用CMake来制作视觉工作室解决方案.由于许多Linux依赖性,它立即失败了许多严重错误.
有没有办法创建一个具有适当的目录结构和包含路径的visual studio解决方案?
我看到四种可能的方法:
使用Visual GDB或WinGDB等商业产品,您可以将远程Linux项目导入Visual Studio.
您在源的根目录中创建一个新的空C++项目,并使用在Visual Studio 2012中导入现有源文件中描述的技巧(但这似乎需要较新版本的Visual Studio> 2012).
通过"显示所有文件"和"包含在项目中",我能够获得其目录结构的所有源/标头(使用Visual Studio 2013/2015测试).
您可以模拟最基本的(add_library()或者message())旁边的所有函数,并尝试获取原始CMake项目以生成Visual Studio解决方案.例如,您自己创建VSToolchain.cmake或PreLoad.cmake使用空实现:
macro(add_custom_command)
endmacro()
macro(add_custom_target)
endmacro()
macro(set_property)
endmacro()
...
Run Code Online (Sandbox Code Playgroud)
我承认这种方法有其局限性.
您正在编写一个特殊的main CMakeLists.txt来将所有源/标头收集到一个新的解决方案中,如:
cmake_minimum_required(VERSION 2.8)
project(MyProject C CXX)
set(_src_root_path "${CMAKE_CURRENT_SOURCE_DIR}")
file(
GLOB_RECURSE _source_list
LIST_DIRECTORIES false
RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}"
"${_src_root_path}/*.c*"
"${_src_root_path}/*.h*"
)
add_library(MySources ${_source_list})
foreach(_source IN ITEMS ${_source_list})
get_filename_component(_source_path "${_source}" PATH)
string(REPLACE "/" "\\" _source_path_msvc "${_source_path}")
source_group("${_source_path_msvc}" FILES "${_source}")
endforeach()
Run Code Online (Sandbox Code Playgroud)
只需将它放在某处(在我的示例中为源的根目录;但您可以更改_src_root_path)并生成包含由目录构建的源/头的Visual Studio项目(请参阅如何使用cmake为嵌套子目录设置Visual Studio过滤器).
| 归档时间: |
|
| 查看次数: |
1280 次 |
| 最近记录: |