下面按从零开始的思路,给你讲一下 Linux 下 C++ 项目如何用 CMake 配置,包含最常见、最实用的方式。
# Ubuntu / Debian
sudo apt update
sudo apt install -y build-essential cmake g++
# 查看版本
g++ --version
cmake --version
project/
├── CMakeLists.txt
└── main.cpp
#include <iostream>
int main() {
std::cout << "Hello CMake!" << std::endl;
return 0;
}
cmake_minimum_required(VERSION 3.10)
project(hello CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_executable(hello main.cpp)
mkdir build
cd build
cmake ..
make
./hello
✅ 推荐用 build 目录(out-of-source build)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_compile_options(-Wall -Wextra)
cmake -DCMAKE_BUILD_TYPE=Debug ..
# 或
cmake -DCMAKE_BUILD_TYPE=Release ..
project/
├── CMakeLists.txt
├── src/
│ ├── main.cpp
│ └── math/
│ ├── add.cpp
│ └── add.h
cmake_minimum_required(VERSION 3.10)
project(demo CXX)
set(CMAKE_CXX_STANDARD 17)
file(GLOB SRC_FILES
src/main.cpp
src/math/*.cpp
)
add_executable(demo ${SRC_FILES})
⚠️ 实际大项目推荐显式列出源文件而不是 GLOB
add_library(math STATIC src/math/add.cpp)
target_include_directories(math PUBLIC src/math)
add_executable(demo src/main.cpp)
target_link_libraries(demo math)
find_package(Threads REQUIRED)
target_link_libraries(demo Threads::Threads)
cmake -DCMAKE_TOOLCHAIN_FILE=/path/vcpkg/scripts/buildsystems/vcpkg.cmake ..
cmake_minimum_required(VERSION 3.10)
project(myapp CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_BUILD_TYPE Debug)
add_executable(myapp main.cpp)
cmake --trace-expand ..
如果你愿意,可以告诉我:
我可以直接给你一套适合你项目的 CMake 模板。