Linux下cmake构建方法
1. 工程目录结构如下:
2. 根目录下build.sh文件内容如下:
#!/bin/bash # 颜色输出 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' ROOT_DIR=$(pwd) OUT_DIR=${ROOT_DIR}/out/ BUILD_DIR=${ROOT_DIR}/build if [ "$1" == "clean" ]; then echo -e "${BLUE}clean all, rm -rf build; rm -rf out${NC}" rm -rf ${BUILD_DIR} rm -rf ${OUT_DIR} fi if [ ! -d "${BUILD_DIR}" ]; then echo "build dir ${BUILD_DIR} not exist, need create !" mkdir -p ${BUILD_DIR} fi if [ ! -d "${OUT_DIR}" ]; then echo "out dir ${OUT_DIR} not exist, need create !" mkdir -p ${OUT_DIR} fi cd ${BUILD_DIR} cmake .. make make install echo $(date) > ${OUT_DIR}/.build_time echo -e "${GREEN}build success!${NC}"3. 根目录下的CMakeLists.txt文件内容如下:
cmake_minimum_required(VERSION 3.10) project(MyProject VERSION 1.0.0) # 设置C标准 set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD_REQUIRED ON) # 设置安装前缀(out目录) set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/out) message(STATUS "Install prefix: ${CMAKE_INSTALL_PREFIX}") # 调试信息 # 添加子目录 add_subdirectory(app) add_subdirectory(tools)4. app目录下的CMakeLists.txt文件内容如下:
set(APP_TARGET "app") set(APP_SRC main.c) add_executable(${APP_TARGET} ${APP_SRC}) install(TARGETS ${APP_TARGET} RUNTIME DESTINATION bin)5. tools目录下的CMakeLists.txt文件内容如下:
add_subdirectory(test)6. tools/test目录下的CMakeLists.txt文件内容如下:
set(TEST_TARGET "test") set(TEST_SRC main.c) add_executable(${TEST_TARGET} ${TEST_SRC}) # 关键:必须添加 install 命令 install(TARGETS ${TEST_TARGET} RUNTIME DESTINATION bin )