在MAC OSX上使用CMake生成.bundle文件

Kor*_*idu 8 macos xcode cmake

我想.bundleMac OSX 10.6.8使用时在文件中生成可执行文件CMake.我的CMakeLists.txt文件如下所示:

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)
Run Code Online (Sandbox Code Playgroud)

然后我打电话给CMake:

CMake -G"Xcode" .
Run Code Online (Sandbox Code Playgroud)

但是,当我编译这个程序时Xcode 3.2.1,我经常得到一个TEST.app文件而不是TEST.bundle文件.

我在这做错了什么?

DLR*_*ave 7

使用BUNDLE_EXTENSION目标属性获取与默认值不同的扩展名.http://www.cmake.org/cmake/help/v2.8.10/cmake.html#prop_tgt:BUNDLE_EXTENSION

另外,我认为.app只是可执行目标的默认值.对于库或模块目标,.bundle应该是默认值.

你尝试过图书馆目标吗?

  • 是的,我终于成功了.它是一组带有BUNDLE_EXTENSION和add_library(而不是add_executable)的不同命令.谢谢你的帮助. (2认同)

小智 7

对于遇到此问题并尝试构建库.bundle的任何人,这对我来说都适用于CMake 3.0:

add_library(Foo MODULE ${SOURCES} ${HEADERS})
set_target_properties(Foo PROPERTIES BUNDLE TRUE)
Run Code Online (Sandbox Code Playgroud)

关键是用MODULESHARED。由于某些原因,CMake会忽略该BUNDLE属性。