我目前正在将项目的构建系统从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目标吗?
答案 0 :(得分:0)
正如w-m和Fred回答的那样,CMAKE确实为Makefile中的库创建了一个目标。
我正在尝试使用库的cmake子项目名称而不是库名称来构建库。
make help
确实对发现此问题有很大帮助,因为它列出了可以构建的所有内容。