添加版本号到XCode命令行实用程序c++项目



我使用Objective-C在XCode中创建了一个命令行实用程序c++工具。我希望版本号显示在创建的可执行文件的信息。所以我在构建设置当前项目版本字段中添加了版本号1.0.0.0。然而,当我构建它时,版本号没有被添加到创建的'Unix可执行文件'

我错过了什么吗?谢谢你的帮助。

不幸的是,从版本3开始,Xcode不会将当前项目版本嵌入到可执行文件中。我不确定这在Xcode 4中是否有改变。

几年前我遇到了这个问题。结果是:
  1. Finder中显示的版本号来自应用程序的Info.plists。对于应用程序包,Info。Plist是一个文件。在可执行文件的情况下,它必须嵌入在__TEXT节中。信息的格式。

  2. Xcode不支持一键嵌入信息。

  3. Xcode不预处理Info。

  4. 除非它们要放入应用程序包中(例如插入CURRENT_PROJECT_VERSION的值)。

我想出了一个解决方案,但它没有经过润色,可能不代表最佳实践。

首先,我创建一个新的stock Info。名为Info_template.plist的文件。我将CFBundleVersion设置为${CURRENT_PROJECT_VERSION}, CFBundleShortVersionString设置为${CURRENT_MARKETING_VERSION}

然后,我添加了一个名为"预处理信息"的运行脚本阶段。使用/bin/sh作为shell,使用以下脚本:

set -u
if ! [[ ${CURRENT_PROJECT_VERSION:-""} && ${CURRENT_MARKETING_VERSION:-""} ]]; then
    echo "Version numbers are not set" >&2
    exit 1
fi
# Ghetto environment variable expansion, since Xcode does not appear to have built-in expansion for arbitrary files
{ echo "cat <<EOF"
  cat ${SRCROOT}/Info_template.plist
  echo "EOF"
} | sh > ${DERIVED_FILES_DIR}/Info.plist

我将$(DERIVED_FILE_DIR)/Info.plist添加到它的输出文件中。

然后,我打开目标的构建设置,并将其添加到其他链接器标志:

-sectcreate __TEXT __info_plist ${DERIVED_FILE_DIR}/Info.plist

要求链接器滚动生成的Info。Plist文件到可执行文件。

让我知道这对你是如何工作的,或者如果我遗漏了什么!

最新更新