0
基本上我有规则为测试源代码创建二进制文件,为应用程序源代码创建二进制文件的其他规则。然后我有两个单独的规则来为它们中的每一个生成可执行文件(每个链接到它们各自的库)。以下是生成测试可执行文件的规则示例。如图所示,我添加了一个编译定义。我的问题是,这个编译定义似乎不会递归地传递给应用程序二进制规则(当从下面的规则调用时)。所以我在应用程序中有一些由“TESTS”保护的代码,我希望只有在触发下面的这条规则时才能编译它。代码也被保护在头文件中。 有没有办法做到这一点?如何为cmake中的目标添加递归编译定义
编辑: 为了使它更清晰,我希望在调用此规则时,将此编译定义添加到两个目标OBJS和Tests_OBJS的编译定义中。
add_executable(tests
$<TARGET_OBJECTS:Tests_OBJS>
$<TARGET_OBJECTS:OBJS>
Tests/Main.cpp)
target_link_libraries(tests ${LIBS})
target_compile_definitions(tests PRIVATE TESTS=1)
好,这似乎直觉有两个不同的调用。我认为在cmake中可以有更优雅的东西来传递来自调用规则的编译定义。但无论如何感谢:) – mkmostafa