是否可以在Visual Studio中将文件添加到CMake生成的解决方案文件夹?

时间:2013-11-27 19:52:38

标签: c++ visual-studio cmake

这个问题或多或少是这个问题的热身:

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") 

那么我可以在文件夹中添加文件而不是目标吗?

3 个答案:

答案 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})