cmake, clarification on include_directories
cmake, clarification on include_directories
我正在尝试使用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/CMakeList 中删除include_directories(include/foo)
.txt会出现一个编译错误,指出在/modules/foo/src/foo 中找不到"foo.h"文件.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.h
和foo/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
命令。 - 在主 CMakeList 的序言中添加
include_directories(${CMAKE_SOURCE_DIR})
.txt - 在项目的其他任何位置,您可以通过指定
#include "foo/foo.h"
来包含您的 foo.h 。无论在哪里执行此操作,都不要忘记使用target_link_libraries
命令与foo
库链接。
珍贵的环节:http://www.cmake.org/cmake/help/v2.8.11/cmake.html#section_Commands
相关文章:
- 既然存在危险,为什么项目要使用-I include开关
- 有充分的理由在h文件中使用include保护而不是cpp文件吗
- 如何将更多文件夹添加到c++include路径
- 什么是"#include <boost/functional/hash.hpp> "?
- 对于MacOS上的G++,如何添加默认的include目录/usr/local/include和默认的库搜索路径/usr
- C++包含来自 #include "DevEngine/Core.h" 的错误
- <filesystem> 在 clang 6 和 10 上 #include 错误
- 在 void 函数中使用 #include 变量C++
- N-API include an .so or dll
- 允许哪些令牌作为 #include 的参数?
- GCC 包含标头(使用"-include")CMake 未检测到的更改
- WebAssembly include OpenCV
- 如何在 c++ 中正确指定 #include 路径以使程序可移植
- 修改生成文件以简化框架 #include 路径
- VS2015/VC++ 在新类模板中禁用默认 #include "stdafx.h"
- macOS 致命错误:sys/_types/_int8_t.h:没有此类文件或目录 #include < sys/_types/_int8_t.h>
- #include < conio.h> 和 getch() 方法之间的关系是什么?
- 如何将构建的C++库安装到 /usr/include?
- 包含一批库和目录路径以"Include Additional Directories"视觉C++的任意方法
- 我如何知道 Ubuntu 11.04 中 gcc、g++/c++ 的"default include directories"、"default link directories"和"default