CMAKE语法:add_definitions、add_compile_options

前言:

  • CMAKE命令通用理解:
command(\<target> [E] <A|B|C>)   

尖括号<> 必选变量,<target>;
方括号[] 可选变量,[E];
竖线| 或的意思,A|B|C;

1、add_library(<name> [STATIC|SHARED|MODULE] source1 [source2 …])
作用: 生成库文件(动态库.so、静态库.a等)
用法:

add_library(so_name SHARED abc.cpp)    
aux_source_directory(. DIR_SRCS)  
add_library(abc STATIC ${DIR_SRCS})  

参考资料:
1、CMAKE:add_library

2、add_definitions、add_compile_definitions、target_compile_definitions用法:
作用:

  • add_definitions&add_compile_definitions: 为当前以下层路径的所有源文件和target增加编译定义
  • target_compile_definitions:为指定target增加编译定义

用法:

target_compile_definitions(<target> <INTERFACE|PUBLIC|PRIVATE> [items1])  

例:

add_definitions(-DFOO)  
add_compile_definitions(FOO) 
target_compile_definitions(target PUBLIC FOO) 

参考资料:
1、 add_definitions
2、add_compile_definitions
3、target_compile_definitions

3、add_compile_options()用法
作用: 设置编译器编译选项

3.1、CMAKE_CXX_FLAGS、CMAKE_C_FLAG

用法: 单独设置C++或C的编译选项,编译选项放在“”内,同时要将“${CMAKE_C_FLAGS}字段保留

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror") 
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}-Werror ")    

3.2、add_compile_options()
用法: 针对所有编译器设置编译选项

add_compile_options(-std=c++11)  

参考文件:
1、cmake:设置编译选项的讲究

4、message([<mode>] “message text” …)
作用: 写在cmkae/Cmakelist.txt文件中,执行时输出日志
用法:

用法解释
message(STATUS “message text”)状态信息
message(“message text”)一般通知
message(FATAL_ERROR “message text”)验证错误,停止编译
message(WARNING “message text”)警告,继续编译

5、execute_process
作用: 执行子进程
用法:

execute_process(COMMAND <cmd1> [args1...]] [WORKING_DIRECTORY <directory>])  

例:

execute_process(COMMAND python ${ABC_PATH}/test1.py WORKING_DIRECTORY ${AA_PATH}/ABC)  

命令解析:${AA_PATH}/ABC路径下执行test1.py脚本

参考资料:
1、CMAKE: execute_process

cmake_minimum_required(VERSION 2.8.3) project(fast_livo) set(CMAKE_BUILD_TYPE "Release") message(STATUS "Build Type: ${CMAKE_BUILD_TYPE}") set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) # Set common compile options set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -fexceptions") # Specific settings for Debug build set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g") # Detect CPU architecture message(STATUS "Current CPU architecture: ${CMAKE_SYSTEM_PROCESSOR}") # Specific settings for Release build if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm|aarch64|ARM|AARCH64)") if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64") # 64-bit ARM optimizations (e.g., RK3588 and Jetson Orin NX) set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -mcpu=native -mtune=native -ffast-math") message(STATUS "Using 64-bit ARM optimizations: -O3 -mcpu=native -mtune=native -ffast-math") else() # 32-bit ARM optimizations with NEON support set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -mcpu=native -mtune=native -mfpu=neon -ffast-math") message(STATUS "Using 32-bit ARM optimizations: -O3 -mcpu=native -mtune=native -mfpu=neon -ffast-math") endif() add_definitions(-DARM_ARCH) else() # x86-64 (Intel/AMD) optimizations set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -march=native -mtune=native -funroll-loops") #-flto message(STATUS "Using general x86 optimizations: -O3 -march=native -mtune=native -funroll-loops") add_definitions(-DX86_ARCH) endif() # Define project root directory add_definitions(-DROOT_DIR=\"${CMAKE_CURRENT_SOURCE_DIR}/\") # Detect CPU core count for potential multithreading optimization include(ProcessorCount) ProcessorCount(N) message(STATUS "Processor count: ${N}") # Set the number of cores for multithreading if(N GREATER 4) math(EXPR PROC_NUM "4") add_definitions(-DMP_EN -DMP_PROC_NUM=${PROC_NUM}) message(STATUS "Multithreading enabled. Cores: ${PROC_N
最新发布
04-03
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值