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