CMAKE_VERBOSE_MAKEFILE 设置为true
时间: 2023-10-10 07:08:54 浏览: 61
将 CMAKE_VERBOSE_MAKEFILE 设置为 true 可以让 CMake 在生成 Makefile 后输出更详细的构建过程信息。这对于调试构建问题非常有帮助。默认情况下,该选项是关闭的。要将其设置为 true,可以在 CMakeLists.txt 文件中添加以下行:
```
set(CMAKE_VERBOSE_MAKEFILE true)
```
或者,可以在构建时使用命令行选项:
```
cmake --verbose .
```
相关问题
set(CMAKE_VERBOSE_MAKEFILE "true") include(CheckCXXCompilerFlag) CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11) CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X) if(COMPILER_SUPPORTS_CXX11) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") elseif(COMPILER_SUPPORTS_CXX0X) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") else() message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.") endif() set(ADDITIONAL_CXX_FLAG "-Wall -O3 -march=native") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ADDITIONAL_CXX_FLAG}") 这段CMAKE代码什么意思
这段CMake代码用于配置C++编译器的标和其他编译选项。让我来行解释它的意义:
1.set(CMAKE_VERBOSE_MAKEFILE "true")`这一行设置了生成详细的构信息,使得构建过程中的细输出可见。
2. `include(CCXXCompilerFlag)`:这行代码用于包一个CMake模块,模块用于检C++编译器是否支持定的编译器标志。
3. `CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)`:这行代码检查C++编译器是否支持`-std=c++11`编译器志。
4. `CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)`:这行代码检查C++编译器是否支持`-std=c++0x`编译器标志。通常情况下,`-std=c++11`更常用。
5. `if (COMPILER_SUPPORTS_CXX11)`:这行代码检查变量`COMPILER_SUPPORTS_CXX11`的值是否为真,即检查编译器是否支持C++11标准。
6. `set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")`:如果编译器支持C++11标准,将变量`CMAKE_CXX_FLAGS`设置为`-std=c++11`,将C++标准设置为C++11。
7. `elseif (COMPILER_SUPPORTS_CXX0X)`:如果编译器不支持C++11标准,检查变量`COMPILER_SUPPORTS_CXX0X`的值是否为真,即检查编译器是否支持C++0x标准。
8. `set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")`:如果编译器支持C++0x标准,将变量`CMAKE_CXX_FLAGS`设置为`-std=c++0x`,将C++标准设置为C++0x。
9. `else()`:如果编译器既不支持C++11标准,也不支持C++0x标准,则执行以下代码块。
10. `message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")`:输出一条错误信息,指示使用了不支持C++11标准的编译器,请使用其他支持C++11的编译器。
11. `set(ADDITIONAL_CXX_FLAG "-Wall -O3 -march=native")`:将变量`ADDITIONAL_CXX_FLAG`设置为一组额外的编译选项,包括启用所有警告(`-Wall`)、最高级别的优化(`-O3`)和本地CPU体系结构优化(`-march=native`)。
12. `set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ADDITIONAL_CXX_FLAG}")`:将变量`CMAKE_CXX_FLAGS`添加到额外的编译选项,以便编译器在构建过程中使用这些选项。
总而言之,这段CMake代码的目的是检查编译器是否支持C++11标准,如果支持,则将C++标准设置为C++11,并添加一组额外的编译选项。如果编译器不支持C++11标准,则输出错误信息并建议使用其他支持C++11的编译器。
CMAKE_CUDA_ARCHITECTURES如何设置
CMAKE_CUDA_ARCHITECTURES是CMake的一个变量,它用于指定CUDA的目标计算能力。在使用CUDA编译器时,需要指定编译出的二进制文件所要运行的GPU架构,CMake提供了这个变量用于设置目标计算能力。
CMAKE_CUDA_ARCHITECTURES的值可以是一个列表,列表中的每个元素都是一个CUDA架构的版本号,例如:5.2、6.0、7.0、7.5等。可以指定多个架构版本,CMake会为每个版本编译出对应的二进制文件。
下面是一个示例CMakeLists.txt文件中如何设置CMAKE_CUDA_ARCHITECTURES的代码:
```
cmake_minimum_required(VERSION 3.17)
project(MyProject CUDA)
set(CMAKE_CUDA_ARCHITECTURES 5.2 6.0 7.0 7.5)
add_executable(my_app main.cu)
```
在上面的示例中,CMAKE_CUDA_ARCHITECTURES被设置为一个包含四个元素的列表,包含CUDA 5.2、6.0、7.0和7.5四个架构版本。同时,使用add_executable命令添加了一个名为my_app的可执行文件,该文件是由main.cu源文件编译而成的。在编译时,CMake会为每个指定的架构版本编译出对应的二进制文件。