Linux下cmake构建方法

  1. 工程目录结构如下:
  1. 根目录下build.sh文件内容如下:
bash 复制代码
#!/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}"
  1. 根目录下的CMakeLists.txt文件内容如下:
bash 复制代码
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)
  1. app目录下的CMakeLists.txt文件内容如下:
bash 复制代码
set(APP_TARGET "app")

set(APP_SRC main.c)

add_executable(${APP_TARGET} ${APP_SRC})

install(TARGETS ${APP_TARGET}
        RUNTIME DESTINATION bin)
  1. tools目录下的CMakeLists.txt文件内容如下:
bash 复制代码
add_subdirectory(test)
  1. tools/test目录下的CMakeLists.txt文件内容如下:
bash 复制代码
set(TEST_TARGET "test")
set(TEST_SRC main.c)

add_executable(${TEST_TARGET} ${TEST_SRC})

# 关键:必须添加 install 命令
install(TARGETS ${TEST_TARGET}
        RUNTIME DESTINATION bin
)
相关推荐
数智工坊12 小时前
Zotero自建Ubuntu WebDAV附件同步方案(完美解决存储空间不足)
linux·运维·ubuntu
ltl13 小时前
HTTP/3 实战:从 QUIC 到 H3 的完整请求链路
linux
ltl13 小时前
POSIX 文件锁:flock、fcntl 与 NFS 上的工程陷阱
linux
ltl13 小时前
CUDA 生态:cuBLAS、cuDNN、NCCL、Triton、CUTLASS
linux
饺子大魔王的男人13 小时前
CentOS部署Cockpit:图形化查看系统、日志与服务状态
linux·运维·centos
不会就选b14 小时前
Linux之信号(二)
linux·运维·服务器
我是小灰灰吖15 小时前
QT在线安装器使用指南:从下载到配置完整教程
linux·qt·ubuntu
GlueNa2SiO315 小时前
第十八章 Linux故障排查与恢复
linux·服务器·笔记·学习
寺中人15 小时前
Linux 基础命令入门实战教程:从零掌握常用操作,新手快速上手
linux·运维·服务器·shell·linux 命令·linux 基础教程·linux 入门
小张成长计划..16 小时前
【Linux】18:基础IO
linux·运维·服务器