CMAKE-库的makefile目标

时间:2019-04-12 12:34:55

标签: cmake

我目前正在将项目的构建系统从gnu makefile更改为cmake(生成makefile)。

我的项目生成了几个库(.lib)和几个可执行文件(.exe)。

当前,我使用以下命令生成makefile:

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中添加一个虚拟可执行文件,并将该库链接到该可执行文件(该文件仅包含一个主文件,而没有实际使用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目标吗?

1 个答案:

答案 0 :(得分:0)

正如w-m和Fred回答的那样,CMAKE确实为Makefile中的库创建了一个目标。

我正在尝试使用库的cmake子项目名称而不是库名称来构建库。

make help确实对发现此问题有很大帮助,因为它列出了可以构建的所有内容。