【问题标题】:Display include-directory as separate part of project in Visual Studio using CMake使用 CMake 在 Visual Studio 中将包含目录显示为项目的单独部分
【发布时间】:2015-09-15 10:59:47
【问题描述】:

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

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

我的项目是这样组织的:

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

在我添加的顶部 CMakeLists.txt 中

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)

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

现在的问题如下:Visual Studio 2015 在大量系统头文件中的“外部引用”目录中显示公共头文件。哪些头文件属于项目并不明显。

如何让 VS 显示独立于系统包含的公共标头?

【问题讨论】:

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


【解决方案1】:

把我的评论变成答案

您希望在 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 中分组源/头文件的更多详细信息,请参阅:

作为一般参考:

【讨论】:

    猜你喜欢
    • 2010-11-29
    • 2020-05-25
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    相关资源
    最近更新 更多