Cmake / Mingw32:cmake命令失败 - 找不到testCCompiler.c

时间:2017-11-10 20:01:19

标签: c++ cmake cygwin mingw32

我在cygwin终端中使用mingw32自定义编译器运行cmake时遇到问题。 我已经尝试了几种方法来解决我的问题,直到我从目的地testCCompiler.c找到CmakeTmp后才失败。

当我尝试在cmake失败后手动make临时文件时,make命令成功运行。 (使用--debug-trycompile保存临时文件)

这是CMakeError.log文件的输出:

Determining if the C compiler works failed with the following output:
Change Dir: /cygdrive/d/programming/cpp/T2D/build/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make.exe" "cmTC_5e0c4/fast"
/usr/bin/make -f CMakeFiles/cmTC_5e0c4.dir/build.make CMakeFiles/cmTC_5e0c4.dir/build
make[1]: Verzeichnis „/cygdrive/d/programming/cpp/T2D/build/CMakeFiles/CMakeTmp“ wird betreten
Building C object CMakeFiles/cmTC_5e0c4.dir/testCCompiler.c.o
/opt/mingw32-1.6.0/bin/i686-w64-mingw32-gcc-6.1.0.exe     -o CMakeFiles/cmTC_5e0c4.dir/testCCompiler.c.o   -c /cygdrive/d/programming/cpp/T2D/build/CMakeFiles/CMakeTmp/testCCompiler.c
i686-w64-mingw32-gcc-6.1.0.exe: error: /cygdrive/d/programming/cpp/T2D/build/CMakeFiles/CMakeTmp/testCCompiler.c: No such file or directory
i686-w64-mingw32-gcc-6.1.0.exe: fatal error: no input files
compilation terminated.
make[1]: *** [CMakeFiles/cmTC_5e0c4.dir/build.make:66: CMakeFiles/cmTC_5e0c4.dir/testCCompiler.c.o] Fehler 1
make[1]: Verzeichnis „/cygdrive/d/programming/cpp/T2D/build/CMakeFiles/CMakeTmp“ wird verlassen
make: *** [Makefile:126: cmTC_5e0c4/fast] Fehler 2

在我看来,运行testCCompiler.c时文件gcc-6.1.0丢失了。 但是当我在cmake失败后手动编译它时,它会成功运行。当我在特定目录中运行make时,它也可以正常工作(但是:编译器标识 6.4.0 ,而我的自定义编译器ID是 6.1.0 )。

mingw32-make手动testCCompiler.c

/usr/bin/cmake.exe -H/cygdrive/d/programming/cpp/T2D/build/CMakeFiles/CMakeTmp -B/cygdrive/d/programming/cpp/T2D/build/CMakeFiles/CMakeTmp --check-build-system CMakeFiles/Makefile.cmake 0
-- The C compiler identification is GNU 6.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /cygdrive/d/programming/cpp/T2D/build/CMakeFiles/CMakeTmp
/usr/bin/cmake.exe -E cmake_progress_start /cygdrive/d/programming/cpp/T2D/build/CMakeFiles/CMakeTmp/CMakeFiles /cygdrive/d/programming/cpp/T2D/build/CMakeFiles/CMakeTmp/CMakeFiles/progress.marks
C:/Cygwin/opt/mingw32-1.6.0/bin/mingw32-make -f CMakeFiles/Makefile2 all
mingw32-make[1]: Entering directory 'D:/programming/cpp/T2D/build/CMakeFiles/CMakeTmp'
C:/Cygwin/opt/mingw32-1.6.0/bin/mingw32-make -f CMakeFiles/cmTC_033c1.dir/build.make CMakeFiles/cmTC_033c1.dir/depend
mingw32-make[2]: Entering directory 'D:/programming/cpp/T2D/build/CMakeFiles/CMakeTmp'
cd /cygdrive/d/programming/cpp/T2D/build/CMakeFiles/CMakeTmp && /usr/bin/cmake.exe -E cmake_depends "Unix Makefiles" /cygdrive/d/programming/cpp/T2D/build/CMakeFiles/CMakeTmp /cygdrive/d/programming/cpp/T2D/build/CMakeFiles/CMakeTmp /cygdrive/d/programming/cpp/T2D/build/CMakeFiles/CMakeTmp /cygdrive/d/programming/cpp/T2D/build/CMakeFiles/CMakeTmp /cygdrive/d/programming/cpp/T2D/build/CMakeFiles/CMakeTmp/CMakeFiles/cmTC_033c1.dir/DependInfo.cmake --color=
Scanning dependencies of target cmTC_033c1
mingw32-make[2]: Leaving directory 'D:/programming/cpp/T2D/build/CMakeFiles/CMakeTmp'
C:/Cygwin/opt/mingw32-1.6.0/bin/mingw32-make -f CMakeFiles/cmTC_033c1.dir/build.make CMakeFiles/cmTC_033c1.dir/build
mingw32-make[2]: Entering directory 'D:/programming/cpp/T2D/build/CMakeFiles/CMakeTmp'
[ 50%] Building C object CMakeFiles/cmTC_033c1.dir/testCCompiler.c.o
/usr/bin/cc     -o CMakeFiles/cmTC_033c1.dir/testCCompiler.c.o   -c /cygdrive/d/programming/cpp/T2D/build/CMakeFiles/CMakeTmp/testCCompiler.c
[100%] Linking C executable cmTC_033c1.exe
/usr/bin/cmake.exe -E cmake_link_script CMakeFiles/cmTC_033c1.dir/link.txt --verbose=1
/usr/bin/cc     -Wl,--enable-auto-import  CMakeFiles/cmTC_033c1.dir/testCCompiler.c.o  -o cmTC_033c1.exe -Wl,--out-implib,libcmTC_033c1.dll.a -Wl,--major-image-version,0,--minor-image-version,0
mingw32-make[2]: Leaving directory 'D:/programming/cpp/T2D/build/CMakeFiles/CMakeTmp'
[100%] Built target cmTC_033c1
mingw32-make[1]: Leaving directory 'D:/programming/cpp/T2D/build/CMakeFiles/CMakeTmp'
/usr/bin/cmake.exe -E cmake_progress_start /cygdrive/d/programming/cpp/T2D/build/CMakeFiles/CMakeTmp/CMakeFiles 0

我的顶级CMakeLists.txt只是一个简单的,用于测试我的工具链配置:

cmake_minimum_required(VERSION 2.8)
project(T2D)
add_executable(T2D main.cpp)

cmake命令位于单独的bash文件中,如下所示:

cmake .. --debug-trycompile -DCMAKE_C_COMPILER=i686-w64-mingw32-gcc-6.1.0 \
         -DCMAKE_CXX_COMPILER=i686-w64-mingw32-g++ \
         -DCMAKE_LIBRARY_PATH="/opt/mingw32-1.6.0/lib/gcc/i686-w64-mingw32/6.1.0 /opt/mingw32-1.6.0/i686-w64-mingw32/lib" \
         -DCMAKE_INCLUDE_PATH="/opt/mingw32-1.6.0/lib/gcc/i686-w64-mingw32/6.1.0/include /opt/mingw32-1.6.0/lib/gcc/i686-w64-mingw32/6.1.0/include-fixed /opt/mingw32-1.6.0/lib/gcc/i686-w64-mingw32/6.1.0/include/c++ /opt/mingw32-1.6.0/i686-w64-mingw32/include/"

除了错误的编译器识别之外,有没有人看到出了什么问题? (这是怎么回事?我已经尝试过设置CCCXX变量,但这仍然没有改变任何内容; makemingw32-make仍然总是使用< strong> 6.4.0 而不是 6.1.0

0 个答案:

没有答案