首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在执行前制作CMake打印命令

在执行前制作CMake打印命令
EN

Stack Overflow用户
提问于 2011-01-27 02:20:00
回答 3查看 35.6K关注 0票数 76

我正在做一个在Linux上用CMake构建的大型C++项目。CMake运行良好,在模块和应用程序树中生成了一大堆Makefiles。运行GNU make会导致链接器错误。如何让make在运行命令之前打印出确切的命令?

-d选项不会打印命令,但会打印大量没有帮助的信息。

-n选项会打印所有命令,但不会运行它们,所以我不能确切地说出问题所在。检查来自make -n的标准输出,我没有看到任何相关的命令。我怀疑一些命令会根据之前命令的结果而改变,并且Makefiles的层次结构使得我们很难知道到底发生了什么。

在make的手册页中,我看不到任何其他有用的选项。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-27 02:21:42

我相当确定这将会起作用:

代码语言:javascript
复制
make VERBOSE=1

您还应该能够将其添加到您的CMakeLists.txt中,以永久设置:

代码语言:javascript
复制
set(CMAKE_VERBOSE_MAKEFILE on)

CMake FAQ中介绍了这一点。

票数 93
EN

Stack Overflow用户

发布于 2012-06-08 01:31:14

对于automake生成的Makefile,请尝试:

代码语言:javascript
复制
make V=1
票数 7
EN

Stack Overflow用户

发布于 2018-08-23 04:39:11

一个适用于GNU make并适用于任何Makefile的选项,无论是否由CMake生成,都可以使用--trace选项来生成。这将打印出make正在执行的命令,并且仍然在执行它们。

这适用于所有命令,而不仅仅是那些在CMake/ V=1生成的makefile中VERBOSE=1V=1触发打印的命令。

在Linux上的另一种选择是以strace -f -e trace=execve make <make options>的身份在strace下运行make。strace的输出将包括执行的每个进程: make、make的shell脚本等等。

例如,您可能会发现CMake生成的makefile执行/usr/bin/cmake -E __run_co_compile <lots of options ...>,但仍然想知道这将运行的确切编译器调用是什么。您可以使用strace方法来实现此目的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4808303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档