OS X CMake:可使用备用bundle名称执行



问题很简单,来自这种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.app 的捆绑

包,并且Foo隐藏在./My cool application.app/Contents/MacOS/Foo内(需要捆绑包名称中的空格(。

但它以Foo.app结尾:./Foo.app/Contents/MacOS/Foo

显然不仅我有这个问题(没有答案(。

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

以下是您可以设置的属性列表 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"
    ...
)

希望对你有帮助

得到了改进的解决方案。现在我有不同的名称:target,budle和可执行文件。

这正是我用于测试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"
)

相关内容

最新更新