gpt4 book ai didi

c++ - 使用 CMake 从没有相对路径的子目录导入

转载 作者:行者123 更新时间:2023-12-02 10:11:16 33 4
gpt4 key购买 nike

鉴于这样的项目结构:

project/
src/
CMakeLists.txt
foo.h
main.cpp
util/
CMakeLists.txt
bar.h
bar.h内部是否可以将包含语句设置为 #include "foo.h" ?我已经通过 Visual Studio 中的“预编译头”配置看到了一些可能的方法,但不直接使用 CMake。

最佳答案

好消息是 CMake 中的编译过程适用于目标依赖项,而不是文件依赖项。所以你不需要改变你的文件层次结构,你只需要修改目标层次结构,但不要太多。

  • 在文件 src/CMakeLists.txt 中,创建额外的 INTERFACE 目标,例如 src_interface
    add_library( src_interface INTERFACE )
  • 将您的包含目录添加到其中:
    target_include_directories( src_interface INTERFACE ${CMAKE_CURRENT_SOURCE_DIR} )
  • 这需要在将 util 添加为子目录之前完成
    add_subdirectory( util )
  • 在 src/util/CMakeLists.txt 中,添加到接口(interface)的链接:
    target_link_libraries( util_target PRIVATE src_interface )

  • 更多关于 CMake 中的 INTERFACE 库: https://cmake.org/cmake/help/latest/command/add_library.html#interface-libraries

    关于c++ - 使用 CMake 从没有相对路径的子目录导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63450692/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com