无C编译器主机上使用CMake生成非C项目Makefile的问题
解决无C编译器环境下用CMake构建非C项目的问题
你遇到的问题本质是CMake默认会启用C/C++语言支持,所以会强制检查C编译器是否存在——但你的项目根本不需要编译C代码,只是用pandoc转文档而已。下面是具体的解决办法:
核心修改:让CMake跳过C/C++编译器检查
只需要修改project指令,明确告诉CMake这个项目不需要启用任何编译语言:
project (the_thing.html NONE)
完整的修改后CMakeLists.txt
cmake_minimum_required (VERSION 2.6) # 用NONE参数禁用默认的C/C++语言支持,避免CMake查找C编译器 project (the_thing.html NONE) LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/Modules/cmake-pandocology") INCLUDE(pandocology) add_document( TARGET the_thing OUTPUT_FILE the_thing.html SOURCES the_thing.md )
Windows环境下的额外注意事项
- 确保pandoc可被CMake找到:如果pandoc没在系统PATH里,直接在CMakeLists.txt中指定它的路径:
set(PANDOC_EXECUTABLE "C:/path/to/your/pandoc.exe") - 选对生成器:Windows上尽量用MinGW Makefiles或NMake Makefiles作为生成器(别用Visual Studio生成器,它默认依赖C编译器环境)。比如打开MinGW终端后运行:
之后执行cmake -G "MinGW Makefiles" ..make就能生成目标HTML文件了。
原理说明
project(... NONE)会告诉CMake:这个项目不需要编译任何C/C代码,因此无需初始化C/C工具链,自然也就不会去检查C编译器是否存在。这样CMake就能专注处理pandocology的文档转换逻辑,完全脱离C编译器的依赖。
内容的提问来源于stack exchange,提问作者YSC
相关产品推荐
相关产品推荐

