«не удается открыть файл ‘user32.lib'» при попытке использовать Visual Studio 2005 в Windows 10

#cmake #visual-studio-2005

#cmake #visual-studio-2005

Вопрос:

Я пытаюсь сопоставить выходные данные с исполняемым файлом Win32 на C , скомпилированным с Visual Studio 2005, поэтому я пытаюсь использовать для этого MSVC. У меня есть проект, определенный в CMake. Я открываю «Командную строку Visual Studio 2005», но когда я пытаюсь cmake -G "NMake Makefiles" .. , я получаю LINK : fatal error LNK1104: cannot open file 'user32.lib' .

Вот CMakeLists.txt :

 cmake_minimum_required(VERSION 3.15)

# set the project name
project(LEGOStarWarsSaga)

# add the executable
add_executable(LEGOStarWarsSaga src/main.cpp)
  

Вот вывод командной строки Visual Studio 2005:

 C:UsersaprimDocumentslstsc>mkdir build

C:UsersaprimDocumentslstsc>cd build

C:UsersaprimDocumentslstscbuild>cmake -G "NMake Makefiles" ..
-- The C compiler identification is MSVC 14.0.50727
-- The CXX compiler identification is MSVC 14.0.50727
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - failed
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio 8/VC/bin/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio 8/VC/bin/cl.exe - broken
CMake Error at C:/Program Files/CMake/share/cmake-3.19/Modules/CMakeTestCCompiler.cmake:66 (message):
  The C compiler

    "C:/Program Files (x86)/Microsoft Visual Studio 8/VC/bin/cl.exe"

  is not able to compile a simple test program.

  It fails with the following output:

    Change Dir: C:/Users/aprim/Documents/lstsc/build/CMakeFiles/CMakeTmp

    Run Build Command(s):nmake /nologo cmTC_41947fast amp;amp;       "C:Program Files (x86)Microsoft Visual Studio 8VCBINnmake.exe"  -f CMakeFilescmTC_41947.dirbuild.make /nologo -L                  CMakeFilescmTC_41947.dirbuild
    Building C object CMakeFiles/cmTC_41947.dir/testCCompiler.c.obj
        C:PROGRA~2MI30EB~1VCbincl.exe @C:UsersaprimAppDataLocalTempnmBDB4.tmp
    testCCompiler.c
    Linking C executable cmTC_41947.exe
        "C:Program FilesCMakebincmake.exe" -E vs_link_exe --intdir=CMakeFilescmTC_41947.dir --rc=C:PROGRA~2MI30EB~1VCbinrc.exe --mt=C:PROGRA~2MI30EB~1VCbinmt.exe --manifests -- C:PROGRA~2MI30EB~1VCbinlink.exe /nologo @CMakeFilescmTC_41947.dirobjects1.rsp @C:UsersaprimAppDataLocalTempnmBE13.tmp
    LINK Pass 1: command "C:PROGRA~2MI30EB~1VCbinlink.exe /nologo @CMakeFilescmTC_41947.dirobjects1.rsp /out:cmTC_41947.exe /implib:cmTC_41947.lib /pdb:C:UsersaprimDocumentslstscbuildCMakeFilesCMakeTmpcmTC_41947.pdb /version:0.0 /machine:X86 /debug /INCREMENTAL:YES /subsystem:console kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTFILE:CMakeFilescmTC_41947.dir/intermediate.manifest CMakeFilescmTC_41947.dir/manifest.res" failed (exit code 1104) with the following output:
    LINK : fatal error LNK1104: cannot open file 'user32.lib'
    NMAKE : fatal error U1077: '"C:Program FilesCMakebincmake.exe"' : return code '0xffffffff'
    Stop.
    NMAKE : fatal error U1077: '"C:Program Files (x86)Microsoft Visual Studio 8VCBINnmake.exe"' : return code '0x2'
    Stop.





  CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
  CMakeLists.txt:4 (project)


-- Configuring incomplete, errors occurred!
See also "C:/Users/aprim/Documents/lstsc/build/CMakeFiles/CMakeOutput.log".
See also "C:/Users/aprim/Documents/lstsc/build/CMakeFiles/CMakeError.log".
  

Прочитав онлайн, я обнаружил, что это как-то связано с отсутствием Windows SDK. Однако у меня установлены пакеты SDK Windows 7.1 и 10.0. Чего мне не хватает?

Бонусные баллы, если есть инструмент сборки, который сделает этот процесс (почти) плавным для любого, кто клонирует проект.


РЕДАКТИРОВАТЬ: установка Visual Studio 2005 Professional с опцией full Visual C правильно устанавливает SDK, и проект создается. Меня беспокоит то, что не у всех есть доступ к VS 2005 Pro.

Комментарии:

1. Хорошо, у меня есть вопросы. 1.) Почему вы используете Nmake? Это действительно очень медленно. Я не рекомендую это. 2.) Как вы связываете user32.lib? 3.) Какую версию cmake вы используете? 4.) Можете ли вы опубликовать cmake, который вызывает эту ошибку компоновщика?

2. @hdf89shfdfs 1) Я использую NMake, потому что в документах CMake указано, что «NMake Makefiles» является заменой Visual Studio 2005 начиная с версии 3.12, и мне нужно использовать набор инструментов VS 2005. 2) Я нет, по какой-то причине сам CMake хочет связать его при создании промежуточного исполняемого cmake -G "NMake Makefiles" .. файла. 3) Я использую 3.19.0-rc1 . 4) Я обновлю свой вопрос.

3. Честно говоря, я в тупике, мне никогда раньше не приходилось иметь дело с таким старым набором инструментов. Попробуйте вместо этого задать дискурс cmake. Там есть разработчики cmake, которые могли бы лучше ответить на ваш вопрос: discourse.cmake.org