Я только начал использовать 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 ++.).
Что я здесь не так делаю, или есть лучший способ справиться с такой проблемой?