假设我们有场景同一套代码需要引入sqlite分别编译成rv1126和horizion
方案一、SET指令给参数默认值
CMakeLists.txt中定义
if (BUILD_PLATFORM STREQUAL rv1126)
message("this is rv1126 platform")
link_directories(${CMAKE_SOURCE_DIR}/lib)
else()
message("this is horizon platform")
link_directories(${CMAKE_SOURCE_DIR}/lib_horizon)
endif()
默认情况下会执行else,打印“this is horizon platform”,但可以更改,比如运行cmake指令时如下:
cmake . -DBUILD_PLATFORM=rv1126
那么打印出来的是“this is rv1126 platform”。
例如我们在build.sh中只需要定义如下:
cd ${BUILD_DIR}
cmake .. \
-DBUILD_PLATFORM=horizon \
-DCMAKE_C_COMPILER=${GCC_COMPILER}-gcc \
-DCMAKE_CXX_COMPILER=${GCC_COMPILER}-g++
make -j4
方案二、OPTION指令开关
option(USE_AEC "Set to switch to build use AEC" OFF)
# 外部用cmake . -DUSE_AEC=ON进行值传入,便可以执行不同的逻辑
if (DUSE_AEC)
message("this is rv1126 platform")
link_directories(${CMAKE_SOURCE_DIR}/lib)
else()
message("this is horizon platform")
link_directories(${CMAKE_SOURCE_DIR}/lib_horizon)
endif()
默认情况下会执行else,打印“this is horizon platform”,但若运行cmake指令时如下:
cmake . -DUSE_AEC=ON
则会打印出“this is rv1126 platform”。