OS X CMake:可通过备用包名称执行

时间:2019-06-10 17:22:02

标签: macos cmake nsbundle

问题很简单,来自此类cmake条目:

add_executable(Foo
    Source1.h
    Source1.cpp
)
set_target_properties(Foo PROPERTIES
    MACOSX_BUNDLE TRUE
    MACOSX_BUNDLE_BUNDLE_NAME "My cool application"
    MACOSX_RPATH TRUE
    MACOSX_FRAMEWORK_IDENTIFIER com.mycompany.coolapplication
    XCODE_ATTRIBUTE_LD_RUNPATH_SEARCH_PATHS "@loader_path/Libraries"
    RESOURCE "${RESOURCE_FILES}"
    XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME TRUE
)

我期望My cool application.appFoo隐藏在./My cool application.app/Contents/MacOS/Foo内的包(包名称中需要有空格)。

但是它以Foo.app./Foo.app/Contents/MacOS/Foo

结尾

显然,不仅我have this problem(没有答案)。

请注意,我的项目是C ++和乘法,因此cmake是最佳选择。

2 个答案:

答案 0 :(得分:1)

以下是您可以设置的属性列表:https://cmake.org/cmake/help/latest/manual/cmake-properties.7.html#properties-on-targets

MACOSX_BUNDLE_BUNDLE_NAME不是其中之一,我以前没有看到任何人使用过!

也许您可以尝试以下方法:

set_target_properties(Foo PROPERTIES
    ...
    OUTPUT_NAME "My cool application"
    ...
)

希望有帮助

答案 1 :(得分:0)

改进了解决方案。现在,我有不同的名称:目标,好友和可执行文件。

这是我用于测试的完全CMakeLists.txt文件:

cmake_minimum_required(VERSION 3.5)

project(CMakeTestBundleName)
add_executable(TestBubdle main.cpp extra.cpp)

set_target_properties(TestBubdle PROPERTIES
    OUTPUT_NAME "BundleName"
    MACOSX_BUNDLE TRUE
    MACOSX_RPATH TRUE
    MACOSX_FRAMEWORK_IDENTIFIER com.testcmake.bundlename
    XCODE_ATTRIBUTE_LD_RUNPATH_SEARCH_PATHS "@loader_path/Libraries"
    RESOURCE "${RESOURCE_FILES}"
    XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME TRUE
    XCODE_ATTRIBUTE_EXECUTABLE_NAME "exeName"
)