【发布时间】:2017-09-27 11:12:27
【问题描述】:
我在 Visual Studio 2015 上使用 C++ 并使用 Git 作为源代码控制。 我正在编写一个多平台应用程序,并希望我的应用程序包含 git 分支并提交它。
在 Visual Studio 以外的平台上,我在 Makefile 中添加了以下几行:
GIT_CUR_COMMIT := $(shell git rev-parse --verify HEAD)
GIT_CUR_BRANCH := $(shell git rev-parse --abbrev-ref HEAD)
DEPS += -DGIT_COMMIT=\"$(GIT_CUR_COMMIT)\" -DGIT_BRANCH=\"$(GIT_CUR_BRANCH)\"
然后在我的应用程序中,我有代码来读取这些预处理器变量并以编程方式公开它们:
std::string getGitCommit()
{
#ifdef GIT_COMMIT
return GIT_COMMIT;
#endif
return "unavailable";
}
std::string getGitBranch()
{
#ifdef GIT_BRANCH
return GIT_BRANCH;
#endif
return "unavailable";
}
但在 Visual Studio 中没有 Makefile。如何在编译时定义这两个变量 GIT_CUR_COMMIT 和 GIT_CUR_BRANCH 并实现相同的行为?
【问题讨论】:
-
我在 Visual Studio 中使用 makefile 构建。所以“没有生成文件”并不是一个真理,而是你如何选择使用 Visual Studio 进行构建。我假设您正在使用基于 vcproj 的构建?
-
是的,很抱歉没有说清楚。我正在使用基于 vcproj 的建筑
标签: c++ visual-studio cross-platform