【问题标题】:Generating a .bundle file with CMake on MAC OSX在 MAC OSX 上使用 CMake 生成 .bundle 文件
【发布时间】:2013-02-27 19:44:44
【问题描述】:

我想使用CMakeMac OSX 10.6.8 上的.bundle 文件中生成一个可执行文件。我的 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)

然后我调用 CMake:

CMake -G"Xcode" .

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

我在这里做错了什么?

【问题讨论】:

  • cmake.org/Wiki/CMake:Bundles_And_Frameworks 处的信息表明MACOSX_BUNDLE 表明目标用于生成捆绑应用程序(例如,Test.app 而不是命令行工具Test),而不是@987654331 @捆绑。
  • 是的,确实如此。我更多地考虑将 .bundle 用于 MAC OSX 上的插件。

标签: xcode macos cmake


【解决方案1】:

对于遇到此问题并尝试构建库 .bundle 的任何人,这在 CMake 3.0 上对我有用:

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

关键是使用MODULE 而不是SHARED。出于某种原因,CMake 会忽略 BUNDLE 属性。

【讨论】:

    【解决方案2】:

    使用 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)的不同命令。感谢您的帮助。
    • @Korchkidu 你能告诉我确切的命令和你写它们的顺序吗?一个很好的例子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 2015-06-29
    • 1970-01-01
    • 2014-08-01
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多