在 Debian 上构建 C++ 项目的标准流程
一 准备环境
二 三种常见构建方式
g++ -Wall -Wextra -std=c++17 -O2 -o hello hello.cpp
./hello
g++ -Wall -Wextra -std=c++17 -O2 -o app main.cpp utils.cpp
CXX := g++
CXXFLAGS := -Wall -Wextra -std=c++17 -O2
TARGET := app
SRCS := main.cpp utils.cpp
$(TARGET): $(SRCS)
$(CXX) $(CXXFLAGS) -o $@ $^
clean:
rm -f $(TARGET)
.PHONY: clean
cmake_minimum_required(VERSION 3.10)
project(MyApp LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_executable(app main.cpp utils.cpp)
# 如需链接系统库(示例:Threads)
# find_package(Threads REQUIRED)
# target_link_libraries(app Threads::Threads)
mkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j$(nproc)
./app
三 管理依赖
find_package(CURL REQUIRED)
find_package(XML2 REQUIRED)
add_executable(app main.cpp)
target_link_libraries(app ${CURL_LIBRARIES} ${XML2_LIBRARIES})
target_include_directories(app PRIVATE ${CURL_INCLUDE_DIRS} ${XML2_INCLUDE_DIRS})
四 交叉编译与多版本 GCC
arm-linux-gnueabi-g++ -Wall -std=c++17 -O2 -o hello_arm hello.cpp
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 70
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 70
sudo update-alternatives --config gcc
sudo update-alternatives --config g++
export PATH=/usr/arm-linux-gnueabi/bin:$PATH
五 打包发布为 DEB
myapp/
├── DEBIAN/
│ └── control
└── usr/
└── bin/
└── myapp
Package: myapp
Version: 1.0.0
Section: utils
Priority: optional
Architecture: amd64
Depends: libc6 (>= 2.34)
Maintainer: Your Name <you@example.com>
Description: A simple C++ application
This is a demo packaged as a deb.
chmod 755 DEBIAN
chmod 755 usr/bin/myapp
dpkg-deb --build myapp myapp_1.0.0_amd64.deb
sudo dpkg -i myapp_1.0.0_amd64.deb