cmake(Windows 10):如何检查完整的编译器输入
我需要检查在编译过程中哪些选项和标志被传递给编译器。打印出环境变量不会显示任何内容。只是空的 CMakeLists.txt包含: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
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
删除已生成的文件。