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
)
相关推荐
别动我齐刘海3 小时前
C++ 工程化学习
java·linux·前端·c++·学习·机器学习·机器人
玖石书5 小时前
Ubuntu 24.04 UFW 全命令攻略:从入门到端口开放实战
linux·运维·ubuntu
xiaoqiMikko5 小时前
Linux 实战(七):useradd、sudoers、umask、SGID、软链 —— 三台真机实测
linux·centos
拂拉氏7 小时前
【知识讲解】 Linux之动静态库的了解
linux·运维·服务器·动静态库
Fcy6487 小时前
Linux下 五种IO模型的认识与⾮阻塞IO的实现
linux·服务器·io
Mikko77 小时前
Linux 重启后日志没了?进程被 OOM 杀了去哪看?logrotate 之后日志还往旧文件写?三台真机实测日志与性能排查
linux·运维·centos
书生执笔画浮沉8 小时前
分享一个开源小工具CAdapt
linux·c·gnu·glibc·kernel·升级·灵感
mounter6258 小时前
Linux 内核热升级(Live Update)技术详解:PCI、VFIO 与 IOMMU 子系统的演进与实战解析引言
linux·linux kernel·kernel·iommu·vfio
砚凝霜9 小时前
【软考信息安全】第十九章 Unix/Linux安全分析与防护
linux·安全·unix
creator_Li9 小时前
Linux 的 Page Cache
linux·page cache