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
)
相关推荐
HLC++2 分钟前
Linux的进程间通信
android·linux·服务器
groundhappy4 小时前
idalib安装和codex ida-mcp配置
linux·开发语言·python
通信小小昕4 小时前
Ubuntu 26.04 中文输入法安装
linux·运维·ubuntu
张小姐的猫6 小时前
【Linux】网络编程 —— HTTP协议(上)
linux·运维·服务器·网络·http·单例模式·策略模式
栩栩云生6 小时前
AI 写代码犯的错,早被写进了错题集
linux·安全·ai编程
imc.117 小时前
linux基础IO
linux·运维·服务器
BelongPanda9 小时前
Linux Nginx 纯手动 Let‘s Encrypt 泛域名证书配置教程
linux·nginx
酷可达拉斯9 小时前
Linux操作系统-shell编程(0)
linux·运维·服务器·python·云计算
2301_777998349 小时前
Linux中断机制:操作系统如何高效运行
linux·运维·服务器
yunwei3710 小时前
eBPF 教程:检查 exec 后真正安装的可执行镜像
linux·开源