OS X CMake:可使用替代包名称执行

Posted

技术标签:

【中文标题】OS X CMake:可使用替代包名称执行【英文标题】:OS X CMake: exectuable with alternative bundle name 【发布时间】:2019-06-10 17:22:02 【问题描述】:

问题很简单,来自这种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 是最佳选择。

【问题讨论】:

【参考方案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"
    ...
)

希望对你有帮助

【讨论】:

【参考方案2】:

得到了改进的解决方案。现在我有不同的名称:目标、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"
)

【讨论】:

以上是关于OS X CMake:可使用替代包名称执行的主要内容,如果未能解决你的问题,请参考以下文章

sh OS X`netstat -tupln`替代方案

Mac OS X 是不是有 virt-manager 替代品? [关闭]

OS X (macOS) 和低级 C(Objective-C 替代方案)中的 Applescript

Mac OS X 中的clock_gettime 替代方案

NSControl 的 setCellClass 在 OS X 10.10 中已弃用,有啥替代方法可以覆盖 NSTextField 的单元格类?

NPM 没有安装包。主机名/IP 地址与证书的替代名称不匹配: