我刚开始在一些个人和学校项目中使用CMake,但遇到了一个小问题。
假设我正在尝试在多个编译器(例如g ++、cl和bcc32)下编译C ++程序。对于每个编译器,我都有不同的命令行开关。我尝试的是基本上创建一个gnu / ms / borland目录,并在其中创建CMake文件夹(例如,在gnudirectory中进入目录并执行cmake -DCMAKE_CXX_COMPILER=g++
)。
在顶层目录的CMakeLists.txt中,我尝试进行以下操作:
if(CMAKE_CXX_COMPILER STREQUAL g++)
set(CMAKE_CXX_FLAGS "-Wextra -Wall -ansi -pedantic")
对于其他编译器也是同样的处理方式,但似乎这样做不正确 - 它完全删除了CXXFLAGS
。如果我让文件完全无条件(即假设使用g++并使用g++标志),则该行有效。
我在这里做错了什么,或者有没有更好的方法来处理这种问题?
CMAKE_COMPILER_IS_GNUCXX
仅适用于 g++。 OP 请求的是 C++,但知道也有CMAKE_COMPILER_IS_GNUCC
可以避免混淆。 - mloskot