使用CMake将包含目录显示为Visual Studio中项目的单独部分

时间:2015-09-15 10:59:48

标签: c++ visual-studio cmake cross-platform

我正在将一个大型库项目从Linux移植到Windows。幸运的是,我们甚至在移植前甚至远程使用CMake,因此不需要进行太多调整。

我认为在Windows上本地开发Windows部件以便于测试可能是一个好主意,因此我使用CMake-gui创建了一个VS Studio

我的项目组织如下:

lib /#库源代码    包括/      mylib /#可公开安装的头文件

在顶部的CMakeLists.txt中,我添加了

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)

所以我的内部源文件就像外部应用程序一样包含标题。

现在的问题如下:Visual Studio 2015在许多系统头中的"外部引用" -directory中显示公共头文件。哪个头文件属于项目并不明显。

如何使VS显示与系统包含的公共标题?

1 个答案:

答案 0 :(得分:2)

将我的评论转化为答案

您希望在Visual Studio项目中由CMake显式列出的所有头文件都必须在CMake目标的源列表中列为源文件。

然后,您可以通过source_group(... FILES/REGULAR_EXPRESSION ...)命令对这些源/标头进行分组。

如果您有多个目标并且您不希望每次都手动添加这些步骤,您可以考虑将它们分组到function()

function(my_add_library _target)
    file(
        GLOB_RECURSE _header_list 
        RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}"
        "${CMAKE_SOURCE_DIR}/include/*.h*"
    )
    add_library(${_target} ${ARGN} ${_header_list})
    target_include_directories(${_target} PRIVATE "${CMAKE_SOURCE_DIR}/include")
    source_group("Public Headers" FILES ${_header_list})
endfunction(my_add_library)

注意

有关在CMake中对源/标头文件进行分组的详细信息,请参阅:

作为一般参考: