[英]For Cmake, can you modify the release/debug compiler flags with `add_compiler_flags()` command?
[英]Cmake (< 3.6) compiler flags in custom command
假设我有一组编译器标志并且有两个目标
set(COMPILE_FLAGS "-a -b -c")
add_executable(exe main.cpp)
set_target_properties(exe PROPERTIES COMPILE_FLAGS ${COMPILE_FLAGS})
add_custom_target(target1 DEPENDS exe)
add_custom_target(target2 DEPENDS exe2)
separate_arguments(COMPILE_FLAGS)
add_custom_command(OUTPUT ${DEVICE_OBJ_FILE}
COMMAND ${CMAKE_CXX_COMPILER} ${COMPILE_FLAGS} ${OTHER_FLAGS} main.cpp -o exe2
DEPENDS source.cpp)
有没有办法避免调用“separate_arguments”
我宁愿将 FLAGS 设置为分号分隔列表和 COMPILE_OPTIONS 而不是 COMPILE_FLAGS,但我们可以访问的最新 cmake 是 3.6
target_compile_options()至少可以追溯到 CMake 3.0,并且应该是设置此类标志的首选方式。 它需要一个列表。
CMakeLists.txt
(注意:我使用-D???
作为标志。通常应该使用target_compile_definitions()来定义。)
cmake_minimum_required(VERSION 3.6)
project ("example" CXX)
set(COMPILE_FLAGS -DAYE -DBEE -DSEE)
set(OTHER_FLAGS -DDEE -DEEE)
add_executable(exe main.cpp)
target_compile_options(exe PRIVATE ${COMPILE_FLAGS})
add_custom_command(OUTPUT exe2
COMMAND ${CMAKE_CXX_COMPILER} ${COMPILE_FLAGS} ${OTHER_FLAGS} ${CMAKE_CURRENT_LIST_DIR}/main.cpp -o exe2
DEPENDS main.cpp)
add_custom_target(target2 DEPENDS exe2)
main.cpp
(exe输出The sum is 3
,exe2输出The sum is 5
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
int sum = 0;
#ifdef AYE
sum++;
#endif
#ifdef BEE
sum++;
#endif
#ifdef SEE
sum++;
#endif
#ifdef DEE
sum++;
#endif
#ifdef EEE
sum++;
#endif
printf("The sum is %d\n", sum);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.