在使用cmake的項目中,我構建了兩個版本的庫,一個是靜態的,一個是動態鏈接的。對於單個源文件,我只想在編譯共享庫時傳遞不同的編譯定義(即-Dfoo=bar
)。CMake:靜態和共享庫的不同編譯定義
我知道set_target_properties
我可以使用COMPILE_DEFINITIONS
作爲單一來源,但我不知道如何只爲共享庫添加該定義。
這怎麼辦?
編輯
要弄清這個問題,怎麼是不同的,我已經做了同一個庫的兩個版本。
add_library(static_lib STATIC foo.cpp bar.cpp)
add_library(dyn_lib SHARED foo.cpp bar.cpp)
我想要做的是增加對dyn_lib
編譯foo.cpp
時foo.cpp
編譯時-Dbaz=True
僅 target屬性。
我在很多項目中看到的常見模式是有2個目標 - 靜態庫和共享目標。有了2個目標,你可以爲它們設置不同的標誌。 – arrowd
@arrowd我對cmake很無知。我只知道如何將add_library($ {lib_name}(STATIC | SHARED)$ {源列表})添加到庫中。你的意思是在源文件的名稱和add_library命令之間進行一定程度的間接尋址? –
我的意思是,你應該對'add_library()'進行2次調用 - 一個用於靜態庫,另一個用於共享。 – arrowd