CMake:如何根据不同的主条目进行编译

CMake: How to compile based on different main entries

本文关键字:编译 何根 CMake      更新时间:2023-10-16

假设我有两个main条目,一个在main1.cpp中,一个在main2.cpp中(还有其他文件,但只有两个主要条目)。如何配置 CMakeLists.txt 文件,以便可以根据不同的目标包含main1.cppmain2.cpp?即我最终将能够使用"make target1"来生成基于main1.cppexec1,并使用"make target2"来生成基于main2.cppexec2以及其他文件。

听起来像是用除电源之外的所有来源制作库的情况。 然后只需添加两个可执行目标,每个目标都链接到库。

add_executable(MyExe1 main1.cpp)
add_executable(MyExe2 main2.cpp)
add_library(MyLib <all the other files>)
target_link_libraries(MyExe1 MyLib)
target_link_libraries(MyExe2 MyLib)

您可以只包含所有源代码两次,因此MyExe1将拥有除main2.cpp之外的所有内容,并且MyExe2除main1.cpp之外的所有内容,但这将涉及编译源代码两次并且效率低下。