在CMake中,如果没有实际执行任何操作,则使Makefile不打印任何内容

在CMake中,如果没有实际执行任何操作,则使Makefile不打印任何内容,cmake,makefile,silent,Cmake,Makefile,Silent,我在我的项目中使用CMake。通常我在启动测试脚本之前运行make,这样,如果代码发生了更改,我就不会测试过时的二进制文件。如果我看到关于编译或链接等的行,我知道有些事情已经改变了。但如果没有任何变化,我仍然看到: [100%] Built target foo 我真的不想看到这一切。我的意思是,我不想要一个完全沉默的构建——只是为了防止不需要任何操作。我该怎么做 PS-以下是制作-rRd | grep“必须重新制作”的结果: Must remake target 'cmake_che

我在我的项目中使用CMake。通常我在启动测试脚本之前运行make,这样,如果代码发生了更改,我就不会测试过时的二进制文件。如果我看到关于编译或链接等的行,我知道有些事情已经改变了。但如果没有任何变化,我仍然看到:

[100%] Built target foo
我真的不想看到这一切。我的意思是,我不想要一个完全沉默的构建——只是为了防止不需要任何操作。我该怎么做

PS-以下是制作-rRd | grep“必须重新制作”的结果:

    Must remake target 'cmake_check_build_system'.
  Must remake target 'all'.
  Must remake target 'CMakeFiles/tester.dir/all'.
Must remake target 'CMakeFiles/tester.dir/depend'.
Must remake target 'CMakeFiles/tester.dir/build'.
Must remake target 'all'.
Must remake target 'default_target'.

但实际上什么都没有做。

实际上什么都没有发生,或者您是否有一个实际正在运行的目标?发生这种情况时,
make-d
会输出什么?@EtanReisner:就像,无数行。。。确切地说是36749
make-rRd
的输出将少得多,但如果使用默认规则/变量,则可能会出现问题。但是,你可以尝试
make | grep“必须重新制作目标”
,看看make认为哪些目标实际上需要重建。仅从该输出中,我就可以看到
default\u target
all
都得到重建(但可能不会输出任何内容),但是
tester
target也会构建并输出
100%
消息。因此,请找到有关
tester
的行块顶部,并查看pastebin(或者查看您自己为什么make认为需要重建它)。@EtanReisner:
make-rRd
为我提供了18k行。。。但是,我完全不知道这些不同的目标是为了什么(你必须看看CMake是否记录了它们,或者你是否可以从makefiles中找到它们),但是它们看起来像是总是运行的东西,尽管
/dependent
/build
听起来像是可以避免的东西。您可以查看输出,找出为什么要制造他们需要构建的东西。如果你能找到它认为触发不应该的构建的东西,你也许能够解决问题并改进它。但可能根本没有这样的问题。这可能就是CMake的工作原理,我不知道。