下面按从零到可运行的思路,给你讲 Linux 下 C++ 如何配置 CMake,包括目录结构、CMakeLists.txt 写法、编译运行步骤,以及常见配置(多文件、第三方库、Debug/Release)。
project/
├── main.cpp
└── CMakeLists.txt
#include <iostream>
int main() {
std::cout << "Hello CMake" << std::endl;
return 0;
}
cmake_minimum_required(VERSION 3.10)
project(hello)
add_executable(hello main.cpp)
mkdir build
cd build
cmake ..
make
./hello
project/
├── CMakeLists.txt
├── src/
│ ├── main.cpp
│ └── utils.cpp
├── include/
│ └── utils.h
└── build/
cmake_minimum_required(VERSION 3.10)
project(myproject)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
include_directories(include)
add_executable(myproject
src/main.cpp
src/utils.cpp
)
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 ..
CMakeLists 中可写:
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
add_compile_options(-g)
endif()
add_library(mylib STATIC src/utils.cpp)
target_include_directories(mylib PUBLIC include)
add_executable(app src/main.cpp)
target_link_libraries(app mylib)
find_package(Threads REQUIRED)
target_link_libraries(app Threads::Threads)
如果是系统库:
target_link_libraries(app pthread)
cmake -DCMAKE_TOOLCHAIN_FILE=/path/vcpkg/scripts/buildsystems/vcpkg.cmake ..
| 问题 | 原因 |
|---|---|
cmake: command not found |
没装 cmake |
No CMAKE_CXX_COMPILER could be found |
没装 g++ |
undefined reference |
没 link 库 |
fatal error: xxx.h |
include 路径没配 |
安装基础工具:
sudo apt update
sudo apt install build-essential cmake
cmake_minimum_required(VERSION 3.10)
project(demo CXX)
set(CMAKE_CXX_STANDARD 17)
add_executable(demo main.cpp)
如果你愿意,可以告诉我:
我可以直接给你一份适合你项目的 CMake 模板。