相关疑难解决方法(0)

如何使用cmake将git SHA1作为定义传递给编译器?

在Makefile中,这可以通过以下方式完成:

g++ -DGIT_SHA1="`git log -1 | head -n 1`" ...
Run Code Online (Sandbox Code Playgroud)

这非常有用,因为二进制文件知道确切的提交SHA1,所以它可以在segfault的情况下转储它.

我如何用CMake实现同样的目标?

git sha1 cmake

51
推荐指数
6
解决办法
2万
查看次数

为什么 cmake 在 git commit 后编译所有内容

假设我有时在 Linux 上使用 cmake 2.8 编译一段代码。

我更改了一个文件“my_changed_file”,运行 cmake,并且只构建了这个文件。到目前为止,一切都很好。

现在我想提交这个:

git add my_changed_file
git commit
Run Code Online (Sandbox Code Playgroud)

如果我再次运行 cmake,我希望什么也不会发生。但我的所有文件都被重新编译,尽管我没有触及任何东西!当我执行 ls -l 时,时间戳似乎未受影响。

我确实有这些行:

execute_process(
  COMMAND git describe --abbrev=8 --dirty --always --tags
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  OUTPUT_VARIABLE GIT_CODE_VERSION
  OUTPUT_STRIP_TRAILING_WHITESPACE
)
add_definitions("-DCODE_VERSION=${GIT_CODE_VERSION}")
Run Code Online (Sandbox Code Playgroud)

但它只影响文件main.cpp

怎么了 ?

谢谢

git compilation cmake

3
推荐指数
1
解决办法
1483
查看次数

标签 统计

cmake ×2

git ×2

compilation ×1

sha1 ×1