我想在Windows 7上使用cmake生成一個C++項目。在它實際上使項目儘管它看起來cmake做了一個工具鏈(我使用MinGW)的快速測試,這就是我的問題。 Cmake觸發一個make構建,最終失敗並顯示響應「系統找不到指定的路徑」。MinGW使投擲「系統找不到指定的路徑。」錯誤
我跑了在運行模式(N)失敗,手動執行的所有命令的具體生成文件:
"C:\Program Files (x86)\CMake\bin\cmake.exe" -E cmake_progress_report C:\SFML\CMakeFiles\CMakeTmp\CMakeFiles 1
echo Building C object CMakeFiles/cmTryCompileExec306416588.dir/testCCompiler.c.obj
C:\PROGRA~2\CODEBL~1\MinGW\bin\gcc.exe -o CMakeFiles\cmTryCompileExec306416588.dir\testCCompiler.c.obj -c C:\SFML\CMakeFiles\ CMakeTmp\testCCompiler.c
echo Linking C executable cmTryCompileExec306416588.exe
"C:\Program Files (x86)\CMake\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTryCompileExec306416588.dir\link.txt --verbose=1
他們都沒有錯誤留下我一個功能.exe文件按預期執行。然而,當通過化妝跑我返回錯誤:
"C:\Program Files (x86)\CMake\bin\cmake.exe" -E cmake_progress_report C:\SFML\CMakeFiles\CMakeTmp\CMakeFiles 1
The system cannot find the path specified.
mingw32-make.exe: *** [CMakeFiles/cmTryCompileExec306416588.dir/testCCompiler.c.obj] Error 1
然後我用簡單的東西,如「目錄」替換所有命令的實驗,發現當通過化妝跑回到「系統cannort找不到指定的路徑「再次打印出目錄信息並退出時出現錯誤。
我的下一步,就我所知,是用-d標誌運行make;有趣的位爲:
Creating temporary batch file C:\Users\CJ\AppData\Local\Temp\make8664-1.bat
Batch file contents:
@echo off
"C:\Program Files (x86)\CMake\bin\cmake.exe" -E cmake_progress_report C:\SFML\CMakeFiles\CMakeTmp\CMakeFiles 1
"C:\Program Files (x86)\CMake\bin\cmake.exe" -E cmake_progress_report C:\SFML\CMakeFiles\CMakeTmp\CMakeFiles 1
CreateProcess(C:\Users\CJ\AppData\Local\Temp\make8664 1.bat,C:\Users\CJ\AppData\Local\Temp\make8664-1.bat,...)
Putting child 00490378 (CMakeFiles/cmTryCompileExec306416588.dir/testCCompiler.c.obj) PID 4730176 on the chain.
Live child 00490378 (CMakeFiles/cmTryCompileExec306416588.dir/testCCompiler.c.obj) PID 4730176
Main thread handle = 00000074
The system cannot find the path specified.
Reaping losing child 00490378 PID 4730176
Cleaning up temp batch file C:\Users\CJ\AppData\Local\Temp\make8664-1.bat
mingw32-make.exe: *** [CMakeFiles/cmTryCompileExec306416588.dir/testCCompiler.c.obj] Error 1
我真的不知道太多關於化妝的內部運作,但是從我可以從這個輸出它看起來像它有事情做與臨時批處理文件,使告訴正在做。我看着這個stackoverflow post What causes GNU Make to shell out,它看起來像觸發一個臨時文件是非常模糊的。我能夠找到一個沒有創建臨時批處理文件(從Windows Git bin中的「ls」)執行的命令,並且確實已經通過make執行了,而不會返回「系統找不到指定的路徑」響應,如「目錄「命令did(」dir「導致生成該臨時文件)。
我覺得我用我的調試能力打了一堵牆,現在轉向你們,看看你們能否提供任何建議。這似乎是我做出正確的假設?你有沒有洞察什麼可能表明這個問題?
我曾經有一個類似的問題,原因是我的防病毒,你可以看到如果你想暫時禁用它。 – Antonio 2015-04-04 21:01:59
@Antonio:我有同樣的問題 - 請參閱[這個問題和答案](https://stackoverflow.com/q/43378159/428857)。 – TonyK 2017-06-11 12:17:13