如 Unix 的 Makefile 或 Windows 的 Visual Studio 工程。
我在开发过程中使用到 Android 和 arm Linux 开发环境。特别是移植和测试某些库的时候,。
cmake_minimum_required(VERSION 3.4.1) # 设置工程名称 project(test project) # 设置目标文件名 set(TAG test) # 交叉工具链,必须配置 set(CMAKE_SYSTEM_NAME Linux) # 指定交叉编译环境安装目录 # set(CMAKE_FIND_ROOT_PATH /opt/hisi-linux/x86-arm/arm-hisiv300-linux) # 设置编译器和编译参数 set(CMAKE_C_COMPILER /opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/bin/arm-hisiv300-linux-gcc) # set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99") set(CMAKE_CXX_COMPILER /opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/bin/arm-hisiv300-linux-g++) # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") add_definitions(-DLINUX) # 编译模式 CMAKE_BUILD_TYPE 枚举如: Debug Release RelWithDebInfo MinSizeRel set(CMAKE_BUILD_TYPE "Debug") # set(CMAKE_BUILD_TYPE "Release") set(CMAKE_C_FLAGS_DEBUG "$ENV{CFLAGS} -O0 -Wall -g -ggdb -mcpu=cortex-a7 -mfloat-abi=softfp -mfpu=neon-vfpv4 -ffunction-sections") set(CMAKE_C_FLAGS_RELEASE "$ENV{CFLAGS} -O2 -Wall") set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb") set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O2 -Wall") # 设置输出目录 if(${CMAKE_BUILD_TYPE} STREQUAL "Release") message("build Release") set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../bin/release) set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../lib/release) elseif(${CMAKE_BUILD_TYPE} STREQUAL "Debug") set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../bin/debug) set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../lib/debug) message("build Debug") else() message("build default") endif() ################################################################################################# # 添加指定目录的源文件 aux_source_directory(. SRC_LIST1) aux_source_directory(./subdir1 SRC_LIST2) set(SRC_LIST ${SRC_LIST1} ${SRC_LIST2}) message("SRC_LIST ${SRC_LIST}") # 打印变量 # 添加头文件目录 set(INC_PATH ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/avutil) include_directories(${INC_PATH}) # 添加链接库的路径 set(LINK_PATH ${PROJECT_SOURCE_DIR}/../lib) link_directories(${LINK_PATH}) # 添加库 set(usrlibs # 链接库列表 pthread m) # 编译项目 # add_executable( ${TAG } # ${SRC_LIST}) # 编译库 # add_library(${TAG } # SHARED # 编译库的类型 SHARED STATIC # ${SRC_LIST}) add_library(${TAG} STATIC # 编译库的类型 SHARED STATIC ${SRC_LIST}) # 编译执行文件的链接库, 放在 add_library add_executable 后面 target_link_libraries(${TAG} ${usrlibs})
文章来源: https://blog.csdn.net/qq_38907791/article/details/87900034