2013-02-27 82 views
5

我想使用CMakeMac OSX 10.6.8上的.bundle文件中生成可執行文件。我的CMakeLists.txt文件看起來像:使用MAC OSX上的CMake生成.bundle文件

cmake_minimum_required(VERSION 2.8) 
PROJECT(TESTProject) 
SET(MACOSX_BUNDLE_BUNDLE_NAME TEST) 
ADD_EXECUTABLE(TEST MACOSX_BUNDLE main.cpp) 
SET_TARGET_PROPERTIES(TEST PROPERTIES MACOSX_BUNDLE TRUE) 

然後我打電話的CMake:

CMake -G"Xcode" . 

然而,當我編譯這個程序與Xcode 3.2.1,我不斷地得到一個TEST.app文件,而不是TEST.bundle文件。

我在這裏做錯了什麼?

+0

http://www.cmake.org/Wiki/CMake:Bundles_And_Frameworks上的信息表明,「MACOSX_BUNDLE」表示目標用於生成綁定應用程序(例如,Test.app而不是命令行工具Test ),而不是'.bundle'包。 – bdash 2013-02-28 10:12:54

+0

是的,確實如此。我更考慮在MAC OSX上插件.bundle。 – Korchkidu 2013-03-01 15:21:44

回答

6

使用BUNDLE_EXTENSION目標屬性獲取與默認值不同的擴展名。 http://www.cmake.org/cmake/help/v2.8.10/cmake.html#prop_tgt:BUNDLE_EXTENSION

另外,我認爲.app只是可執行目標的默認值。對於庫或模塊目標,.bundle應該是默認值。

你試過用圖書館的目標嗎?

+2

是的,我終於成功了。它與BUNDLE_EXTENSION和add_library(而不是add_executable)是一組不同的命令。謝謝你的幫助。 – Korchkidu 2013-03-08 17:42:34

+0

@Korchkidu您能否讓我知道確切的命令以及您編寫它們的順序。一個例子就是盛大。 – crezefire 2017-03-31 13:36:44

1

對於誰碰到這個運行,並試圖建立一個圖書館.bundle任何人,這爲我工作在CMake的3.0:

add_library(Foo MODULE ${SOURCES} ${HEADERS}) 
set_target_properties(Foo PROPERTIES BUNDLE TRUE) 

的關鍵是使用MODULESHARED。出於某種原因,否則CMake將忽略BUNDLE屬性。