У меня есть проект, который я не знал, как создать решение против него.Поэтому я решил использовать KDevelop, который может анализировать каталог и использовать CMakeLists.txt
.
Дело в том, что cmake не может найти некоторые файлы lib для ссылки.Каталог, в котором хранятся эти файлы, находится в PATH
.Сначала я подумал, что мог бы собрать другую ARCH, но я не знаю, куда идти дальше.
C:/Users/Petros/projects/QtDice/build> "C:/Program Files/CMake/bin/cmake.exe" "-DCMAKE_EXPORT_COMPILE_COMMANDS=ON" "-DCMAKE_INSTALL_PREFIX=C:/Program Files (x86)/QtDice" "-DCMAKE_BUILD_TYPE=Debug" C:/Users/Petros/projects/QtDice
-- The CXX compiler identification is MSVC 19.15.26730.0
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.15.26726/bin/Hostx64/x64/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.15.26726/bin/Hostx64/x64/cl.exe -- broken
CMake Error at C:/Program Files/CMake/share/cmake-3.12/Modules/CMakeTestCXXCompiler.cmake:45 (message):
The C++ compiler
"C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.15.26726/bin/Hostx64/x64/cl.exe"
is not able to compile a simple test program.
It fails with the following output:
Change Dir: C:/Users/Petros/projects/QtDice/build/CMakeFiles/CMakeTmp
Run Build Command:"nmake" "/nologo" "cmTC_c2fa6\fast"
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\bin\HostX64\x64\nmake.exe" -f CMakeFiles\cmTC_c2fa6.dir\build.make /nologo -L CMakeFiles\cmTC_c2fa6.dir\build
Building CXX object CMakeFiles/cmTC_c2fa6.dir/testCXXCompiler.cxx.obj
C:\PROGRA~2\MICROS~3\2017\COMMUN~1\VC\Tools\MSVC\1415~1.267\bin\Hostx64\x64\cl.exe @C:\Users\Petros\AppData\Local\Temp\nm8F3F.tmp
testCXXCompiler.cxx
Linking CXX executable cmTC_c2fa6.exe
"C:\Program Files\CMake\bin\cmake.exe" -E vs_link_exe --intdir=CMakeFiles\cmTC_c2fa6.dir --manifests -- C:\PROGRA~2\MICROS~3\2017\COMMUN~1\VC\Tools\MSVC\1415~1.267\bin\Hostx64\x64\link.exe /nologo @CMakeFiles\cmTC_c2fa6.dir\objects1.rsp @C:\Users\Petros\AppData\Local\Temp\nm9088.tmp
LINK Pass 1: command "C:\PROGRA~2\MICROS~3\2017\COMMUN~1\VC\Tools\MSVC\1415~1.267\bin\Hostx64\x64\link.exe /nologo @CMakeFiles\cmTC_c2fa6.dir\objects1.rsp /out:cmTC_c2fa6.exe /implib:cmTC_c2fa6.lib /pdb:C:\Users\Petros\projects\QtDice\build\CMakeFiles\CMakeTmp\cmTC_c2fa6.pdb /version:0.0 /machine:x64 /debug /INCREMENTAL /subsystem:console kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTFILE:CMakeFiles\cmTC_c2fa6.dir/intermediate.manifest CMakeFiles\cmTC_c2fa6.dir/manifest.res" failed (exit code 1104) with the following output:
LINK : fatal error LNK1104: cannot open file 'kernel32.lib'
NMAKE : fatal error U1077: '"C:\Program Files\CMake\bin\cmake.exe"' : return code '0xffffffff'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\bin\HostX64\x64\nmake.exe"' : return code '0x2'
Stop.
CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
CMakeLists.txt:2 (project)
-- Configuring incomplete, errors occurred!
See also "C:/Users/Petros/projects/QtDice/build/CMakeFiles/CMakeOutput.log".
See also "C:/Users/Petros/projects/QtDice/build/CMakeFiles/CMakeError.log".
*** Failure: Exit code 1 ***
```
Есть какие-нибудь идеи о том, что может быть не так?
РЕДАКТИРОВАТЬ: РЕШЕНО
Наконец я нашел довольно хакерский обходной путь.Пакетный файл для KDevelop в среде VS не работает для VS-2017 (в котором определена переменная VS150COMNTOOLS
), но поддерживает до VS-2015 (VS140COMNTOOLS
).
VS2017 изменил макет своих папок, так что старый SET script="!base!\..\..\VC\vcvarsall.bat"
действительно становится SET script="%base%..\..\VC\Auxiliary\Build\vcvarsall.bat" x64
.
Конечно, этот новый скрипт должен запускаться внутри консоли Developer Command Prompt
, а не простым нажатием напакетный файл.
setlocal EnableDelayedExpansion
setlocal enableextensions
if DEFINED VS150COMNTOOLS (
SET "base=%VS150COMNTOOLS%"
) else ( IF DEFINED VS120COMNTOOLS (
SET "base=%VS120COMNTOOLS%"
) else ( IF DEFINED VS110COMNTOOLS (
SET "base=%VS110COMNTOOLS%"
) else ( IF DEFINED VS100COMNTOOLS (
SET "base=%VS100COMNTOOLS%"
) else (
START CMD /C "The Microsoft Visual C++ compiler was not found on your system, you might not be able to compile programs. && PAUSE"
) )))
SET script="%base%..\..\VC\Auxiliary\Build\vcvarsall.bat" x64
CALL %script%
FOR /F "usebackq tokens=3*" %%A IN (`REG QUERY "HKEY_LOCAL_MACHINE\Software\KDE\KDevelop" /v Install_Dir`) DO (
set appdir=%%A %%B
)
if NOT DEFINED appdir (
FOR /F "usebackq tokens=3*" %%A IN (`REG QUERY "HKEY_LOCAL_MACHINE\Software\Wow6432Node\KDE\KDevelop" /v Install_Dir`) DO (
set appdir=%%A %%B
)
)
START "" "%appdir%\bin\kdevelop.exe"