Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cmake(Windows 10):如何检查完整的编译器输入_Cmake_Mingw - Fatal编程技术网

cmake(Windows 10):如何检查完整的编译器输入

cmake(Windows 10):如何检查完整的编译器输入,cmake,mingw,Cmake,Mingw,我需要检查在编译过程中哪些选项和标志被传递给编译器。打印出环境变量不会显示任何内容。只是空的 CMakeLists.txt包含: cmake_minimum_required(VERSION 3.5.1 FATAL_ERROR) project(GtestExample LANGUAGES CXX) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) message(STATUS "compiler ${CMAKE_C

我需要检查在编译过程中哪些选项和标志被传递给编译器。打印出环境变量不会显示任何内容。只是空的

CMakeLists.txt包含:

cmake_minimum_required(VERSION 3.5.1 FATAL_ERROR)
project(GtestExample LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

message(STATUS "compiler ${CMAKE_CXX_COMPILER}")

#adding subdirecotories, linking libs etc
# ...

add_compile_options("-O0")
add_compile_options("-Wall")
message(STATUS "C++ compiler flags: ${CMAKE_CXX_FLAGS}")

Windows终端输出:

C:\Users\NDanashevskii\Documents\cplusplus\cplusplus_test\cmake_out>cmake ..
-- compiler C:/MinGW/bin/g++.exe
-- C++ compiler flags:
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/NDanashevskii/Documents/cplusplus/cplusplus_test/cmake_out

您能否支持解决此问题?

要检查编译器输入是否完整,请在
cmake--build
期间打开工具执行。有几种方法:

  • cmake..
    然后'mingw32 make VERBOSE=1'
  • cmake-DCMAKE\u VERBOSE\u MAKEFILE:BOOL=ON
    然后
    cmake--build。--VERBOSE=1
  • set(CMAKE\u VERBOSE\u MAKEFILE ON)
    添加到CMakeLists.txt和
    CMAKE--build。--VERBOSE=1

  • 清理后执行build以检查完整输出。

    命令
    add\u compile\u options
    不修改
    CMAKE\u CXX\u标志
    变量。相反,它修改了
    COMPILE\u选项
    目录属性。这在合同中有明确的规定。而且
    CMAKE\u CXX\u FLAGS
    不是环境变量。这是CMake变量。@Tsyvarev正确,谢谢您的回答。但是COMPILE\u OPTIONS变量也是空的,即使在
    add\u COMPILE\u option()
    使用之后也是空的。有什么方法可以在摘要中检查所有编译器标志吗?变量和属性在CMake中是不同的。“有没有办法在摘要中检查所有编译器标志?”-当使用
    make
    (在
    cmake
    之后)生成项目时,您可以传递附加选项
    VERBOSE=1
    。因此,将打印每个执行的命令行,您可以检查编译可执行文件或库是否使用所需的编译器标志。@Tsyvarev正在执行
    cmake--build./--VERBOSE=1
    显示
    cmake.exe
    mingw32 make.exe
    的输入,但不显示
    g++.exe
    的输入。您能告诉我如何检查g++输入吗?嗯,这应该可以:
    mingw32 make VERBOSE=1
    。请注意,仅打印实际执行的命令行。也就是说,如果您的可执行文件已经生成,并且不需要重新生成,则不会打印任何内容。您可以运行
    mingw32 make clean
    删除已生成的文件。