Я только начал использовать CMake для некоторых личных и школьных проектов, и я был в шоке от незначительной проблемы.Условный CXX_FLAGS с использованием cmake на основе компилятора?
Предположим, я пытаюсь выполнить компиляцию на C++ в нескольких компиляторах (g ++, cl и bcc32 в этом случае). У меня есть разные ключи командной строки для каждого компилятора, и то, что я пытался сделать, это в основном создать каталог gnu/ms/borland и создать там материал CMake (введя каталоги и сделав cmake -DCMAKE_CXX_COMPILER=g++
.. в gnu, каталог, например).
В CMakeLists.txt на каталог верхнего уровня, я пытался делать что-то вдоль линий:
if(CMAKE_CXX_COMPILER STREQUAL g++)
set(CMAKE_CXX_FLAGS "-Wextra -Wall -ansi -pedantic")
И так далее с elsifs для других компиляторов, но это, кажется, не правильно работает - он полностью опускает CXXFLAGS
. Строка работает, если я делаю файл совершенно безусловным (т. Е. Просто предположим g ++ и используем флагов g ++).
Что я здесь делаю неправильно, или есть лучший способ справиться с такой проблемой?
Примечание ' CMAKE_COMPILER_IS_GNUCXX' предназначен только для g ++. OP запрашивает C++, правильно, но хорошо знать, что существует также 'CMAKE_COMPILER_IS_GNUCC', чтобы избежать путаницы. – mloskot