由於cmake的3.9以下generator expression已被引入:
$<TARGET_BUNDLE_DIR:tgt>
對於該文檔指出:
完整路徑束目錄(my.app,my.framework或my.bundle),其中tgt是目標的名稱。
如果使用cmake < 3.9,如何獲得相同的結果(路徑到捆綁目錄)?
我試過如下:
include(BundleUtilities)
get_dotapp_dir($<TARGET_FILE:my_target> DOTAPP_DIR)
遺憾的是它不工作。爲get_dotapp_dir
文檔說:
返回最近的父目錄的名稱以給定的完整路徑的可執行文件」的.app」結束。如果沒有這樣的父目錄,那麼只需返回包含可執行文件的目錄。
而且包含可執行迪爾正是我得到了它,即使父母.app
目錄確實存在。
所以,當目標是捆綁包時,LOCATION綁定到'.app'目錄?我沒有真正嘗試它,因爲我猜想它返回了包內可執行文件的路徑。 – skypjack
如果您的目標將屬性BUNDLE設置爲「true」,則可執行文件將以如下路徑構建:「 /MyTarget.app/Contents/MyTarget」 –
Antwane
當調用add_executable時,目標被標記爲「MACOSX_BUNDLE」 。我知道它在哪裏構建,我要問的是,如果這個目標的'LOCATION'屬性包含可執行文件的路徑或包的路徑,'$'包含一個可執行文件。 –
skypjack