- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 CMake 的 C++ 项目。我希望将当前的 git 提交(和“-dirty”标志)以一种在 git 提交更改时自动更新的方式编码到应用程序中,例如在成功的 git commit
或 之后git checkout
.
我知道我可以通过让 CMake 依赖于 .git/index
文件来做到这一点,给这个:
find_package(Git QUIET REQUIRED)
execute_process(
COMMAND "${GIT_EXECUTABLE}" describe --match=NeVeRmAtCh --always --abbrev=8 --dirty
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
RESULT_VARIABLE res
OUTPUT_VARIABLE GIT_COMMIT
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)
set_property(GLOBAL APPEND
PROPERTY CMAKE_CONFIGURE_DEPENDS
"${CMAKE_SOURCE_DIR}/.git/index")
target_compile_definitions(mylib PUBLIC GIT_COMMIT=\"${GIT_COMMIT}\")
然后目标程序(C++)可以只使用GIT_COMMIT
预处理器符号。
所以我的要求是:
-dirty
后缀),此技术满足本地构建的这些要求。
工作中的 Spanner 是我正在使用 CLion 在 Raspberry Pi 上远程编译应用程序(关键问题)(具体细节并不重要)。由于 CLion 的工作方式,.git
目录(因此 .git/index
)不会复制到远程系统。因此,在 RPi 上编译代码时,.git/index
根本不存在。因此,该技术失败了,因为 RPi 上的构建系统根本无法获得所需的信息。
所以我想以某种方式在源目录中自动创建一个新文件(以便 CLion 将其同步到 RPi),该文件基于 .git/index
,或者也许只是 git describe
的输出,在运行 CLion 的主机上。每当 git commit 更改时,我都需要更新此文件。内容可用于填充 GIT_COMMIT
。如果此文件附加到 CMAKE_CONFIGURE_DEPENDS
,则无论内容如何,当文件上的时间戳发生变化时都会触发重新配置。相反,我希望仅在文件的内容发生更改时才进行重新配置,因为每次生成的 makefile 运行时它很可能会自动更新,但不会更改实际提交。
解决这个问题的正确方法是什么?
在这一点上,我想知道我是否使事情过于复杂,所以如果有任何可能建议替代方法的评论,我将不胜感激。
最佳答案
如果您要提取源代码以部署到非 Git 树中,请使用 git archive
和 export-subst
和 export-ignore
用于自定义部署内容的属性。例如,您可以在选定文件的标记部分上运行 git log
的格式化程序,在提取的提交 ID 和消息以及作者等中进行替换。
关于git - 在 CLion 远程工具链中跟踪 git 提交时如何触发 cmake 重新配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59078882/
如何在 Mac 上的 Clion EAP 中更改默认工作目录? 每次创建新项目时,我都需要将其更改为项目位置。 最佳答案 首先,无法通过 CLion 的 GUI 更改工作目录(请参阅 Source 中
我想知道 CLion IDE 是用什么语言编写的,以及使用什么库来制作图形。 最佳答案 See this wiki post. 用Java编写 关于clion - CLion 是用什么语言和图形库制作
我已按照说明更新我的 GDB 以便与 Eigen3 一起使用。但是,CLion IDE 无法在调试面板中加载特征矩阵的内容。 本应是快速验证和调试结果的过程变成了耗时的手动打印过程(或更糟:在 cyg
我正在尝试使用 Clion 编写一个 C++ 应用程序,该应用程序使用使用 ASCII 序列的彩色控制台输出。当我在 Clion 中运行程序时,没有显示颜色。但是当我在终端中运行程序时,我可以看到颜色
使用CLion时,我发现输出有时会中断。 例如,在运行代码时: main.cpp #include int main() { int i; for (i = 0; i < 1000;
我正在寻找一种在 CLion IDE 中并行处理多个项目的方法。 现在我一次只能处理一个窗口中的每个项目,但我正在寻找类似于 Eclipse IDE(见下文)的解决方案 - 能够在侧栏上看到我不同项目
嗨,我在更改函数颜色的颜色时遇到问题。我正在使用 Material 主题,除了函数调用之外,我更改了几乎所有颜色。任何人都遇到过这个问题并知道如何解决它?它是否列在另一个标题下?我目前将它用于 C/C
大多数从可以选择构建单个文件的其他 IDE 切换过来的人都对 CLion 感到有些困惑,而 CLion 恰好没有选项。 那么如何避免将每个源文件的每个名称都添加到 CMake 中呢? 最佳答案 您正在
在 CLion 中,如何指定 C++ 编译器将在其中查找头文件的包含目录?另外,如何设置要链接的库及其库目录? 目前我正在做那些直接修改文件的任务 CMakeLists.txt : include_d
在使用 CLion 时,我发现输出有时会中断。 例如运行代码时: main.cpp #include int main() { int i; for (i = 0; i < 1000
在查看 C 库函数或系统调用的文档时,Linux 上的 CLion 会显示相应的手册页。我在 Windows 本地和适用于 Linux 的 Windows 子系统中都安装了手册和手册页。有没有办法将
在 CLion 中创建文件时,以下标题位于文件顶部: // // Created by on 14.01.18. // 有人通过 can remove this header 去 Settings
我想要查看我的 C 程序的 ASM 有很多原因,但据我发现,似乎只能查看没有 src 的 3rd 方模块的 ASM。 如何查看我的 src 的 ASM? 最佳答案 我有同样的问题,但找到了 clion
我很难让 Ctrl+V 在 CLion 中粘贴代码(我使用的是 Windows 1.1.1 版)。当我尝试粘贴使用 Ctrl+C 复制的代码时,例如网站或其他程序,它似乎只是偶尔工作。通常它会粘贴一段
CLion 有一个很好的 integration of Clang-Tidy ,但默认配置是针对现代 C++ 的。然而,我坚持使用的编译器仅为 C++03,而且 Clang-Tidy 关于使我的代码现
我正在尝试在我的 Windows 机器中将 valgrind 与 clion 结合使用。我已经完成了 setting up WSL 的步骤和 valgrind在 window 上。虽然当我尝试在我的“
使用上下文菜单,我可以通过右键单击和 new > C++ Class 在 CLion 中轻松创建 .cpp 和头文件. 头文件的扩展名为.h。如何使 .hpp 成为默认的 header 扩展? 最佳答
编译前准备 我们正常直接编译后生成的exe是没有任何图标的 那么很多exe程序都是有个性图标的那么在vs和qt中是比较简单的可是在Clion编译中怎么才能添加呢? 前提条件,本机必须配置好MinGW,
虽然在我的编程“职业”中大部分时间都使用了 Java 和 PHP,但我现在正在尝试更深入地学习 C++。为此,我使用 CLion 作为我的 IDE - 主要是因为我非常熟悉 phpStorm 和 In
您好,我用 c 语言编程,我喜欢使用 clion。有没有办法更改它在新项目中创建的默认文件的方式?我希望它创建一个 main.c 和 make 文件来反射(reflect)这一点。 最佳答案 阅读Ho
我是一名优秀的程序员,十分优秀!