【发布时间】:2019-04-12 12:34:55
【问题描述】:
我目前正在更改我的项目的构建系统,从 gnu makefiles 到 cmake(生成 makefiles)。
我的项目生成了几个库 (.lib) 和几个可执行文件 (.exe)。
目前我使用以下命令生成生成文件:
cmake -G "Unix Makefiles" .. -DCMAKE_BUILD_TYPE=Debug
生成的 makefile 包含一个 all 目标,以及每个可执行文件的目标(使用 add_executable cmake 指令编译),所以我可以编译项目的一个子集(这节省了大量时间) : make executable_1; make executable_2 等等。
但是,库没有目标(使用 add_library cmake 指令编译),所以我不能做 make library_1 例如。我想这样做是因为这样可以节省很多时间。
我试图在库的 cmake 中添加一个虚拟可执行文件,并将库链接到这个可执行文件(它只包含一个 main,而没有实际使用 library_1 的代码)。
add_library(library_1 test.cpp)
add_executable(dummy_exe dummy_main.cpp)
target_link_library(dummy_exe library_1)
它确实为 dummy_exe 添加了一个目标,但不构建库,因为它实际上不需要链接任何 library_1 的代码。
无论如何,这是一种变通方法,毕竟我宁愿打电话给make library_1。有没有办法使用 cmake 为库添加 makefile 目标?
【问题讨论】:
-
使用
add_library应该在Makefile中创建一个目标,也许你忽略了它?如果您确定它没有被创建,请创建一个最小示例并详细说明您的环境(CMake 版本、操作系统)。 -
make help将列出所有已知目标,对我来说确实列出了库目标。
标签: cmake