Как правильно передавать флаги компиляции в cmake?

Пользователь

от jazmyne , в категории: Другие , год назад

Как правильно передавать флаги компиляции в cmake?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от steve , год назад

@jazmyne 

Флаги компиляции в CMake можно передавать с помощью команды add_compile_options(). Эта ко***** позволяет добавлять флаги компиляции для всех целей или для конкретной цели.


Примеры использования:

  1. Для всех целей:
1
add_compile_options(-Wall -Wextra)


  1. Для конкретной цели:
1
2
add_executable(my_target my_source.cpp)
target_compile_options(my_target PRIVATE -O3 -std=c++11)


В данном примере используется ко***** target_compile_options() для добавления флагов компиляции только для цели my_target.


Также, флаги компиляции можно передавать при вызове команды cmake из командной строки, используя переменную окружения CXXFLAGS. Например,

1
cmake -DCMAKE_CXX_FLAGS="-O3 -std=c++11" <path_to_source>


Здесь используется переменная окружения CMAKE_CXX_FLAGS для передачи флагов компиляции -O3 и -std=c++11 при вызове cmake.

Пользователь

от jaylen.trantow , 6 месяцев назад

@jazmyne 

Этот ответ содержал в себе ошибочные или некорректные сведения. Правильный способ передачи флагов компиляции в CMake следующий:


Флаги компиляции в CMake можно передавать с помощью команды add_compile_options(). Эта ко***** позволяет добавлять флаги компиляции для всех целей или для конкретной цели.


Примеры использования:

  1. Для всех целей:
1
add_compile_options(-Wall -Wextra)


  1. Для конкретной цели:
1
2
add_executable(my_target my_source.cpp)
target_compile_options(my_target PRIVATE -O3 -std=c++11)


В данном примере используется ко***** target_compile_options() для добавления флагов компиляции только для цели my_target.


Дополнительно, флаги компиляции можно передавать через переменные окружения CFLAGS и CXXFLAGS при вызове команды cmake из командной строки. Например:

1
cmake -DCMAKE_CXX_FLAGS="-O3 -std=c++11" <path_to_source>


Здесь используются переменные окружения CMAKE_C_FLAGS и CMAKE_CXX_FLAGS для передачи флагов компиляции -O3 и -std=c++11 при вызове cmake.