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
)
相关推荐
JiaWen技术圈1 小时前
内核子系统 nf_tables 深度解析
linux·服务器·安全·运维开发
计算机安禾1 小时前
【Linux从入门到精通】第32篇:Nginx入门——高性能Web服务器搭建
linux·服务器·nginx
ZenosDoron2 小时前
Linux 中,rm -r 和 -f
linux·运维·服务器
Hello.Reader2 小时前
Ubuntu 上正确安装 Kali 虚拟机、Docker 与 kail 工具指南
linux·ubuntu·docker
原来是猿2 小时前
Linux UDP Socket 编程入门:Echo Server/Client实现
linux·运维·udp
中微子2 小时前
突然爆火的Warp 终端,开源1天破 4w Stars
linux·人工智能·开源
计算机安禾2 小时前
【Linux从入门到精通】第33篇:数据库MySQL/MariaDB安装与基础调优
linux·数据库·mysql
楼兰公子3 小时前
读取rpi摄像头
linux·服务器·算法
李景琰3 小时前
Debian12安装配置Mqtt之EMQX
linux·运维·服务器