Obtener el hash de compilation de GIT fuera del directory actual

Estoy usando CMake para hacer una compilation fuera de mi núcleo / fuera de la fuente de mi proyecto, y quiero include el resultado de un "git describe –tags –dirty" como número de versión en el proyecto ( solo para reference sobre errores). Sin embargo, cualquier bash de intentar decir a git dónde está el repository de código da como resultado un error como "fatal: no es un repository de git (ni ninguno de los directorys principales): .git".

¿Hay alguna manera de especificar dónde debe search git el repository, que no sea el directory de trabajo actual?

O puede usar el WORKING_DIRECTORY -argument para execute_process() desde cmake. Esto es lo que hago:

 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) 

Y luego tengo la versión en ${out} .

Puedes usar git con --git-dir -argument.

Puede especificar --git-dir en la línea de command, o establecer GIT_DIR en el entorno, o escribir la ruta en un file llamado .git : echo gitdir: /path/to/.git > .git o hacer un enlace suave a el repository: ln -s /path/to/.git .

(Las dos últimas opciones son probablemente las less deseables, y se mencionan aquí simplemente para completarlas).