簡體   English   中英

CMake:靜態庫和共享庫的不同編譯定義

[英]CMake: Different compile definitions for static and shared library

在一個使用 cmake 的項目中,我構建了一個庫的兩個版本,一個是靜態的,一個是動態鏈接的。 對於單個源文件,我只想在為共享庫編譯時傳遞不同的編譯定義(即-Dfoo=bar )。

我知道set_target_properties可以在其中將COMPILE_DEFINITIONS用於單個源,但我不知道如何僅為共享庫添加該定義。

如何做到這一點?

編輯

為了澄清這個問題的不同之處,我已經在制作同一個庫的兩個版本。

add_library(static_lib STATIC foo.cpp bar.cpp)
add_library(dyn_lib SHARED foo.cpp bar.cpp)

我想這樣做是為了添加目標屬性, foo.cpp與編譯-Dbaz=True編譯只有foo.cppdyn_lib

庫目標dyn_lib編譯的對象添加定義-Dbaz=True的最簡單方法是使用target_compile_definition()

target_compile_definition(dyn_lib PRIVATE -Dbaz=True)

這實際上是為dyn_lib目標設置COMPILE_DEFINITIONS屬性的較短版本。

set_target_properties(dyn_lib PROPERTIES COMPILE_DEFINITIONS -Dbaz=True)

要編譯定義為-Dbaz=True單個源文件,請使用set_source_files_properties()

set_source_files_properties(file.cpp PROPERTIES COMPILE_DEFINITIONS -Dbaz=True)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM