要用cmake构建可执行程序,必须在cmakelists.txt中用add_executable声明目标名和源文件;单文件写法为add_executable(myapp main.cpp),多文件可用显式列表、file(glob)或慎用的aux_source_directory;c++标准和编译选项须在add_executable之后设置。

要用CMake构建一个可执行程序,必须在CMakeLists.txt中正确声明源文件与目标名,否则编译时会报错“no targets specified”或找不到main函数。
基础写法:单个源文件生成可执行文件
第一步:在项目根目录新建CMakeLists.txt文件。
第二步:写入最低必要内容:
cmake_minimum_required(VERSION 3.10)
project(MyApp)
add_executable(myapp main.cpp)
这行add_executable(myapp main.cpp)就完成了核心配置——【myapp是生成的可执行文件名,不带.exe后缀;main.cpp必须真实存在且含main()函数】。Windows下生成myapp.exe,Linux/macOS下生成myapp,名称完全由第一个参数决定。
多源文件项目写法
方法一:把所有.cpp文件逐个列出来
add_executable(myapp main.cpp util.cpp logger.cpp)
CMake 4.3.2 Windows x86_64 历史版本安装包,适合旧项目兼容、构建环境回退、CMakeLists.txt 迁移验证、Visual Studio/Ninja/Makefile 生成器测试和 C/C++ 项目维护。
方法二:用aux_source_directory自动收集(慎用)
aux_source_directory(. SRC_LIST)
add_executable(myapp ${SRC_LIST})
【注意:aux_source_directory不会递归子目录,且可能混入非源码文件(如test.cpp),导致链接失败】
方法三:先用file(GLOB ...)显式匹配,更安全
file(GLOB SOURCES "*.cpp" "src/*.cpp")
add_executable(myapp ${SOURCES})
指定C++标准和编译选项
add_executable(myapp main.cpp)
set_target_properties(myapp PROPERTIES CXX_STANDARD 17)
target_compile_options(myapp PRIVATE -Wall -Wextra)
这三行必须写在add_executable之后,否则CXX_STANDARD等属性不生效。-Wall -Wextra能提前暴露类型转换、未使用变量等问题,避免运行时崩溃。










