You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用MinGW编译TetWild库时出现cc.exe多文件编译参数错误

编译TetWild库报错解决方案

错误根源分析

编译命令中同时出现了MSVC专属编译参数(如/nologo、/MP、/wdXXXX)和MinGW的cc.exe,gcc无法识别MSVC参数,会误将这些参数判定为源文件名,导致出现cannot specify '-o' with '-c', '-S' or '-E' with multiple files错误。

解决步骤

1. 彻底清理构建环境

删除现有build目录,避免残留配置干扰:

rm -rf build
mkdir build && cd build

2. 显式指定MinGW编译器并配置Boost

通过CMake命令行参数指定编译器和Boost路径,避免直接修改项目CMakeLists.txt:

cmake -G "MinGW Makefiles" ^
  -DCMAKE_C_COMPILER=gcc ^
  -DCMAKE_CXX_COMPILER=g++ ^
  -DBOOST_ROOT=/your/boost/path ^
  -DBoost_INCLUDE_DIR=/your/boost/path/include ^
  -DBoost_LIBRARY_DIR=/your/boost/path/lib ^
  -DBoost_ARCHITECTURE=-x64 ^
  -DBoost_NO_BOOST_CMAKE=ON ^
  ..

注意:确保Boost库是用MinGW编译生成的,MSVC编译的Boost无法和MinGW兼容。

3. 替换MSVC参数为gcc兼容选项

添加CMake参数,覆盖原项目中的MSVC专属编译设置:

cmake -G "MinGW Makefiles" ^
  # 上述编译器和Boost配置参数...
  -DCMAKE_C_FLAGS="-DNOMINMAX -DVC_EXTRALEAN -DWIN32_LEAN_AND_MEAN -D_CRT_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -O3 -DNDEBUG -fdiagnostics-color=always -MD" ^
  -DCMAKE_CXX_FLAGS="-DNOMINMAX -DVC_EXTRALEAN -DWIN32_LEAN_AND_MEAN -D_CRT_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -O3 -DNDEBUG -fdiagnostics-color=always -MD" ^
  ..

如果需要保留警告抑制,将MSVC的/wdXXXX转换为gcc的-Wno-XXX格式,例如:

  • /wd4275 → -Wno-non-virtual-dtor
  • /wd4996 → -Wno-deprecated-declarations

4. 禁用响应文件(可选)

若问题源于响应文件(.rsp)格式错误,强制CMake不使用响应文件:

cmake -G "MinGW Makefiles" ^
  # 上述所有配置参数...
  -DCMAKE_C_USE_RESPONSE_FILE_FOR_INCLUDES=OFF ^
  -DCMAKE_CXX_USE_RESPONSE_FILE_FOR_INCLUDES=OFF ^
  ..

5. 执行编译

使用多线程编译加快速度:

mingw32-make -j4

额外排查点

如果问题仍存在,打开geogram/src/lib/geogram/third_party/CMakeFiles/geogram_third_party.dir/build.make文件,查看第76行的编译命令,确认是否有多个源文件被错误地放到同一个-c编译指令中。

内容的提问来源于stack exchange,提问作者Buddy Boy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 07:01:04