CMakeList 编译两个app,一个开宏定义,一个不开

在 CMake 中,你可以通过设置不同的编译选项和宏定义来编译两个不同的应用程序。以下是一个示例,展示了如何在同一个 CMakeLists.txt 文件中编译两个应用程序,其中一个应用程序启用宏定义,另一个则不启用。

示例项目结构

假设你的项目结构如下:

project/
├── CMakeLists.txt
├── src/
│   ├── main.cpp
│   ├── app1.cpp
│   ├── app1.h
│   ├── app2.cpp
│   └── app2.h
└── include/
    └── common.h

CMakeLists.txt 文件

cmake_minimum_required(VERSION 3.10)
project(MyProject)

# 设置包含目录
include_directories(include)

# 查找源文件
file(GLOB APP1_SOURCES "src/app1.cpp" "src/main.cpp")
file(GLOB APP2_SOURCES "src/app2.cpp" "src/main.cpp")

# 创建第一个应用程序并启用宏定义
add_executable(app1 ${APP1_SOURCES})
target_compile_definitions(app1 PRIVATE ENABLE_MACRO)

# 创建第二个应用程序,不启用宏定义
add_executable(app2 ${APP2_SOURCES})

# 设置编译选项(如果需要)
target_compile_options(app1 PRIVATE -Wall -Wextra)
target_compile_options(app2 PRIVATE -Wall -Wextra)

示例源文件

src/main.cpp

#include "common.h"
#include <iostream>

int main() {
#ifdef ENABLE_MACRO
    std::cout << "App1 with macro enabled" << std::endl;
#else
    std::cout << "App2 without macro" << std::endl;
#endif
    return 0;
}

src/app1.cpp

#include "app1.h"

// 实现 app1 的相关功能

src/app2.cpp

#include "app2.h"

// 实现 app2 的相关功能

include/common.h

#pragma once

// 公共头文件内容

编译和运行

# 配置构建系统
mkdir build
cd build
cmake ..

# 编译两个应用程序
make

#运行应用程序
./app1
./app2

通过这些步骤,你可以在同一个 CMake 项目中编译两个不同的应用程序,其中一个启用宏定义,另一个不启用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值