gpt4 book ai didi

c++ - cmake,关于 include_directories 的说明

转载 作者:行者123 更新时间:2023-11-28 07:22:05 24 4
gpt4 key购买 nike

我正在尝试使用 cmake,但我是 cmake 和 c++ 的新手。我想要一段代码用于不同的其他程序。文件夹结构是这样的:

/modules/foo
/modules/foo/src
/modules/foo/include/foo
/cmake
/apps/bar
/apps/bar/src
/apps/bar/include

我的问题是在 bar main 中我可以同时包含(编译和运行)

#include "foo.h"
#include "foo/foo.h"

我认为这是出现问题的征兆。我正在寻找的是类似

#include "foo.h" // only inside the foo source code

#include "foo/foo.h" // outside

如果我从/modules/foo/CMakeLists.txt 中删除 include_directories(include/foo),我会收到一个编译错误,显示 'foo.h' file not found在/modules/foo/src/foo.cpp

如果我从 FindFoo.cmake 中删除 include_directories(${CMAKE_CURRENT_LIST_DIR}/../modules/foo/include) 我会在 'foo/foo.h' 文件中得到错误找不到/apps/bar/src/main.cpp

我能做什么?解决此类问题的常见做法是什么?我是否必须忽略在 apps/bar/src/main.cpp 中我可以包含 foo.hfoo/foo.h 的事实?我是否只需要编写一次 include_directories 并在 foo.cpp 中使用 #include "foo/foo.h

最佳答案

  • 用 foo.h 和 foo.cpp 创建一个单独的目录 foo。在 foo.cpp 中放置 #include "foo.h",可能首先包含它
  • 添加 CMakeLists.txt 文件以创建 foo 库,add_library 命令。
  • 在主 CMakeLists.txt 的序言中添加 include_directories(${CMAKE_SOURCE_DIR})
  • 从项目的其他地方,您可以通过指定#include "foo/foo.h" 来包含您的 foo.h。无论您在哪里执行此操作,都不要忘记使用 target_link_libraries 命令链接到 foo 库。

珍贵链接:http://www.cmake.org/cmake/help/v2.8.11/cmake.html#section_Commands

关于c++ - cmake,关于 include_directories 的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19277027/

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