这个问题或多或少是这个问题的热身:
how to get cmake to add files to msvcs solution tree
它从来没有得到有效的答案所以我想稍微改变一下:
是否可以使用cmake 2.8.3引入的cmake解决方案文件夹将文件直接添加到vs解决方案?我想做相当于VS->解决方案 - > Add->现有项目的cmake。因此,我的文件将出现在属于解决方案的文件夹中,而不是项目中。
我找到了一些示例,如何使用解决方案文件夹将目标分组到文件夹中,其代码如下:
set_property( GLOBAL PROPERTY USE_FOLDERS ON)
set_property(TARGET ${TARGET_NAME} PROPERTY FOLDER "Test")
那么我可以在文件夹中添加文件而不是目标吗?
答案 0 :(得分:6)
这可能是不可能的。
CMake将其资产组织到项目和目标中。该项目与Visual Studio的解决方案文件相对应,而每个目标将在相应的解决方案中生成Visual Studio项目。
现在问题是CMake不允许向CMake项目添加文件。实际上,CMake项目只不过是一组目标,几乎不提供任何自定义选项。因此,您提到的USE_FOLDERS
选项只能用于对解决方案中的VS项目进行分组,而不能用于单个文件。
最接近你要求的可能是添加一个保存文件的custom target。但是,这仍然会在解决方案中生成一个VS项目(除了文件之外还包含许多其他内容),而不是普通文件夹。
答案 1 :(得分:1)
如果我正确理解了这个问题,我想我知道该怎么做:
set(FILES_TO_ADD
file1
file2
file3)
source_group("Group Name" FILES ${FILES_TO_ADD})
source_group
命令在Visual Studio项目中创建文件夹。
答案 2 :(得分:0)
这个答案只是为"自定义目标添加了一个例子" ComicSansMS在接受的答案中提出的解决方案。这是我目前用来添加我的全局文件。
set( SOLUTION_FILES
${CMAKE_SOURCE_DIR}/CMakeLists.txt # root CMakeLists file
${CMAKE_SOURCE_DIR}/cmake/macros.cmake # cmake functions
${CMAKE_SOURCE_DIR}/CMakeInCodeDefinitions.h.in # imported cmake variables
# etc...
)
add_custom_target( GlobalFiles SOURCES ${SOLUTION_FILES})