【发布时间】:2019-08-04 15:57:02
【问题描述】:
Stack Overflow 上有很多类似的问题,但没有一个能回答我的问题。
我有一个使用 CMake 构建的 C++ 库:
mylib
| - CMakeLists.txt
| - src/
| | - m.h
| | - m.cpp
| - include/
| | - mylib/
| | | - a.h
| | | - something/
| | | | - some.h
| - cmake/
| - mylibConfig.cmake.in
| - mylibConfigVersion.cmake.in
然后我创建另一个包含上述库的库或可执行文件:
myapp
| - CMakeLists.txt
| - src/
| | - main.cpp
| - include/
| | - myapp/
| | | - b.h
| - libs
| | - mylib
并且想像这样在myapp 中使用mylib。请注意mylib 标头是如何包含在类似格式的目录中的:
#include <mylib/a.h>
#include <mylib/something/some.h>
mylib 应在构建 myapp 时构建,以便以下工作无需任何其他构建步骤:
$ cd myapp/build
$ cmake ..
$ make
这是我查看过的一些 Stack Overflow 帖子的列表。我都尝试过,但它们根本不起作用:
【问题讨论】:
-
其他问题似乎与 external 项目有关,而您的项目具有内部库(即它位于 app 项目的目录树内)所以我猜
add_subdirectory应该足够了。不过,我个人会反对这样的项目组织。 -
我是
cmake --build .的忠实粉丝,而不是make,它更便携。
标签: c++ cmake external-project