我正在使用CMake来执行我的项目的非核心/源代码构建,并且希望包含“git describe --tags - -dirty“作为项目中的版本号(仅供参考)。但是,任何试图告诉git代码回购的地方的尝试都会导致类似“致命的错误:不是git存储库(或任何父目录):.git”。在当前目录之外获取GIT构建散列
有没有一种方法可以指定git应该在当前工作目录以外的位置查找回购站?
我正在使用CMake来执行我的项目的非核心/源代码构建,并且希望包含“git describe --tags - -dirty“作为项目中的版本号(仅供参考)。但是,任何试图告诉git代码回购的地方的尝试都会导致类似“致命的错误:不是git存储库(或任何父目录):.git”。在当前目录之外获取GIT构建散列
有没有一种方法可以指定git应该在当前工作目录以外的位置查找回购站?
或者你也可以从CMake的使用WORKING_DIRECTORY
-argument到execute_process()
。这是我做的:
execute_process(COMMAND "${GIT_EXECUTABLE}" describe --tags --dirty
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
RESULT_VARIABLE res
OUTPUT_VARIABLE out
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)
然后我有在${out}
版本。
您可以使用git
和--git-dir
-agument。
你可以在命令行上指定--git-dir
,或者在环境中设置GIT_DIR
,或者路径写入名为.git
文件:echo gitdir: /path/to/.git > .git
或作出的软链接回购:ln -s /path/to/.git
。
(最后两个选项可能是最不可取的,并只提到完整性。)