Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.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编译器独立标志_Cmake - Fatal编程技术网

CMake编译器独立标志

CMake编译器独立标志,cmake,Cmake,是否有可以设置的编译器独立标志?在C++编译器中,我希望能够在GCC和 O2/OS/COD>中设置一个变量,例如:代码>优化>最下层< /代码>,获得 -O3>代码>。有什么我可以使用,或者应该分别为每个编译器设置标志吗?简单地说:没有,没有标志可以直接为每个编译器单独设置优化级别 然而,CMake提供了所谓的。它们独立于正在使用的编译器,并且每个都带有预定义的标志选择,其中一个是优化标志 可用的生成类型包括 Debug 发布 RelWithDebInfo MinSizeRel 关于全面的解

是否有可以设置的编译器独立标志?在C++编译器中,我希望能够在GCC和 O2/OS/COD>中设置一个变量,例如:代码>优化>最下层< /代码>,获得<代码> -O3>代码>。有什么我可以使用,或者应该分别为每个编译器设置标志吗?

简单地说:没有,没有标志可以直接为每个编译器单独设置优化级别

然而,CMake提供了所谓的。它们独立于正在使用的编译器,并且每个都带有预定义的标志选择,其中一个是优化标志

可用的生成类型包括

  • Debug
  • 发布
  • RelWithDebInfo
  • MinSizeRel
关于全面的解释,我指的是。当包含在
CMakeLists.txt
文件中时,它还提供了一些代码来帮助识别有问题的标志:

message("CMAKE_C_FLAGS_DEBUG is ${CMAKE_C_FLAGS_DEBUG}")
message("CMAKE_C_FLAGS_RELEASE is ${CMAKE_C_FLAGS_RELEASE}")
message("CMAKE_C_FLAGS_RELWITHDEBINFO is ${CMAKE_C_FLAGS_RELWITHDEBINFO}")
message("CMAKE_C_FLAGS_MINSIZEREL is ${CMAKE_C_FLAGS_MINSIZEREL}")

message("CMAKE_CXX_FLAGS_DEBUG is ${CMAKE_CXX_FLAGS_DEBUG}")
message("CMAKE_CXX_FLAGS_RELEASE is ${CMAKE_CXX_FLAGS_RELEASE}")
message("CMAKE_CXX_FLAGS_RELWITHDEBINFO is ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
message("CMAKE_CXX_FLAGS_MINSIZEREL is ${CMAKE_CXX_FLAGS_MINSIZEREL}")

在某种程度上。对于某些概念,CMake支持以与编译器无关的方式指定它们,通常是通过设置相关目标的属性。不幸的是,没有一个地方可以列出所有这些可能性。我查看了当前版本,并将以下属性标识为“抽象构建工具选项语法”:

  • COMPILE\u PDB\u NAME
  • 包括目录
  • INSTALL\u RPATH
  • 过程间优化
  • 链接目录
  • 链接库
  • PDB_名称
  • PDB\u输出目录
  • (加上用于设置输出名称、路径等的属性)
除了IPO之外,显然没有什么可以处理优化标志

就我所知,也没有添加这些的通用过程-当有人发现需要它们(以及实现它们的时间)时,它们被添加到CMake中