cmake常用命令
添加宏
########## 新版本add_compile_definitions(OPENCV_VERSION=${OpenCV_VERSION})add_compile_definitions(WITH_OPENCV2)# 或者add_compile_definitions(OPENCV_VERSION=${OpenCV_VERSION} WITH_OPENCV2)########## 老版本sadd_definitions(-DHELLO_EXPORT) #定义HELLO_EXPORT宏########## 为特定目标添加宏target_compile_definitions(my_target PRIVATE EX3 FOO=1 BAR=1)
指定编译类型
# Set a default build type if none was specifiedif(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) message("Setting build type to 'RelWithDebInfo' as none was specified.") set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose the type of build." FORCE) # Set the possible values of build type for cmake-gui set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")endif()
指定C++版本
方法一:使用命令(CMake 2.8)
cmake_minimum_required(VERSION 2.8)# try conditional compilationinclude(CheckCXXCompilerFlag)CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)# check results and add flagif(COMPILER_SUPPORTS_CXX11)# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")elseif(COMPILER_SUPPORTS_CXX0X)# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")else() message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")endif()
方法二:设置CMake变量(CMake 3.1)
cmake_minimum_required(VERSION 3.1)# set the C++ standard to C++ 11set(CMAKE_CXX_STANDARD 11)
方法三:compile_features(CMake 3.1)
cmake_minimum_required(VERSION 3.1)# set the C++ standard to the appropriate standard for using autotarget_compile_features(hello_cpp11 PUBLIC cxx_auto_type)# Print the list of known compile features for this version of CMakemessage("List of compile features: ${CMAKE_CXX_COMPILE_FEATURES}")