在 Linux 下做 C++ 项目的自动化配置,通常是指自动检测环境、生成构建配置、管理依赖、一键编译。下面按“从简单到专业”的方式给你梳理。
适合小型项目,手写或自动生成。
CXX = g++
CXXFLAGS = -std=c++17 -Wall
TARGET = app
SRC = $(wildcard src/*.cpp)
$(TARGET): $(SRC)
$(CXX) $(CXXFLAGS) -o $(TARGET) $(SRC)
clean:
rm -f $(TARGET)
使用:
make
make clean
✅ 优点:简单
❌ 缺点:跨平台、依赖管理弱
适合需要 ./configure 的项目
autoconfautomakelibtoolautoscan
mv configure.scan configure.ac
# 编辑 configure.ac
autoheader
autoreconf -i
./configure
make
✅ 优点:Linux 原生、成熟
❌ 缺点:复杂、学习曲线陡
目前 Linux C++ 自动化配置的主流方案
cmake_minimum_required(VERSION 3.10)
project(demo)
set(CMAKE_CXX_STANDARD 17)
add_executable(app src/main.cpp)
mkdir build && cd build
cmake ..
make
find_package(OpenCV REQUIRED)
target_link_libraries(app ${OpenCV_LIBS})
✅ 优点:
vcpkg install fmt
CMake 中:
find_package(fmt CONFIG REQUIRED)
target_link_libraries(app fmt::fmt)
conan install . --build=missing
你可以写 setup.sh:
#!/bin/bash
sudo apt update
sudo apt install -y cmake g++ ninja-build
mkdir -p build
cd build
cmake -GNinja ..
ninja
chmod +x setup.sh
./setup.sh
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: sudo apt install cmake g++
- run: cmake -B build
- run: cmake --build build
✅ CMake + Ninja + Conan/vcpkg + CI
如果你愿意,可以告诉我:
我可以直接给你一套可复制的模板结构。