Как установить компоновщик MSVC в CMake с помощью MSYS - PullRequest
4 голосов
/ 17 ноября 2011

У меня проблема с тем, чтобы заставить CMake использовать компоновщик MSVS вместо компоновщика MinGW.Для поддержки MSVC в MSYS я реализовал bash-скрипт, заставляющий CMake использовать компилятор MSVC для создания файлов NMake:

cmake -G "Makeake-файлы NMake" -DMSVC = true -DCOMPILER_ROOT = $ COMPILER_ROOT -DCMAKE_PROFILE = $ CMAKE_PROFILE -DCMAKE_BUILD_TYPE = $ CMAKE_DEBUG -DCMAKE_CXX_LINKER = $ COMPILER_ROOT / бен / linker.exe

CMake использует компилятор MSVC правильно и создает файлы NMake как и ожидалось:

1008

Но при вызове nmake CMAKE по-прежнему использует компоновщик MinGW:

Linking CXX shared library bin\brCore.dll
c:\binrev\development\mingw\bin\ld.exe: unrecognized option '-Wl,--enable-auto-import'
c:\binrev\development\mingw\bin\ld.exe: use the --help option for usage information
LINK failed. with 1
NMAKE : fatal error U1077: "c:\binrev\development\cmake\bin\cmake.exe": Rückgabe-Code  "0xffffffff"
Stop.
NMAKE : fatal error U1077: "c:\binrev\development\vs2010\VC\BIN\nmake.exe": Rückgabe-Code "0x2"
Stop.
NMAKE : fatal error U1077: "c:\binrev\development\vs2010\VC\BIN\nmake.exe": Rückgabe-Code "0x2"
Stop.

После запуска сценария оболочки bash в CMakeCache вместо компоновщика MSVC устанавливается компоновщик MinGW:

//Path to a program.
CMAKE_LINKER:FILEPATH=c:/binrev/development/mingw/bin/ld.exe

Хорошо, я понял, что должен установить переменную CMAKE_LINKER вместо CMAKE_CXX_LINKER, чтобы получить правильную зависимость.Но теперь у меня есть еще одна ошибка:

Linking CXX shared library bin\brCore.dll
Das System kann die angegebene Datei nicht finden
mt.exe : general error c10100b1: Failed to load file "bin\brCore.dll". Das System kann  die angegebene Datei nicht finden.
MT failed. with 31

Кто-нибудь знает, что я сделал неправильно?Спасибо за любую помощь.

С наилучшими пожеланиями, Hellhound

1 Ответ

0 голосов
/ 20 сентября 2013

Это звучит как классическая «более чем одна вещь с одним и тем же именем» в задаче PATH, причем «неправильный» находится в PATH первым.

Если поместить каталог с помощью инструментов MSв передней части PATH, у вас все еще возникает такая же проблема?

Если вы в командной строке MSYS введете «какая ссылка», какой файл первым в среде?

Инструменты от Microsoft, вероятно, не устойчивы к другим инструментам с такими же именами, что и в PATH.(то есть - возможно, mt.exe просто вызывает «link.exe» и ожидает, что он будет в ПУТИ, и не полностью его квалифицирует, чтобы гарантировать, что link.exe ему необходим ...) Аналогично для инструментов MSYS.

Вам действительно нужно тщательно настроить среду сборки, чтобы избежать подобных проблем, когда на одном компьютере установлено несколько сред разработки.

...