CMake执行后Bin目录为空,多CPP编译可执行文件问题排查
问题解决
核心错误:foreach循环变量不匹配
你的CMakeLists.txt中,foreach循环的结束语句使用了未定义的变量SOURCE_FILES,而实际遍历的集合是APP_SOURCES,导致循环逻辑异常,无法生成可执行文件目标。
修正后的循环代码:
file(GLOB APP_SOURCES src/*.cpp) foreach(SOURCE_PATH ${APP_SOURCES}) get_filename_component(EXECUTABLE_NAME ${SOURCE_PATH} NAME_WE) add_executable(${EXECUTABLE_NAME} ${SOURCE_PATH}) endforeach()
(注:CMake允许endforeach()省略循环变量和集合,或者明确写为endforeach(SOURCE_PATH ${APP_SOURCES}))
关键步骤遗漏:执行编译命令
cmake . -G "MinGW Makefiles"仅负责生成构建系统文件,不会自动编译代码。生成构建文件后,需要执行以下命令完成编译:
mingw32-make
(若环境中make命令可用,也可直接使用make)
执行后,可执行文件会输出到bin目录,第三方库文件会输出到lib目录。
额外检查项
- 确认
src/目录下存在有效的.cpp文件,file(GLOB src/*.cpp)才能匹配到源文件; - 若不确定文件是否被匹配,可添加调试参数查看变量内容:
输出中会显示cmake . -G "MinGW Makefiles" --debug-outputAPP_SOURCES的具体内容,验证是否包含预期的源文件路径。
内容的提问来源于stack exchange,提问作者Alix Blaine
相关产品推荐
相关产品推荐

