VS 2017 строит x64 проект с кросс-компилятором - PullRequest
0 голосов
/ 15 октября 2018

У меня огромный проект на c ++, для которого я использую cmake для генерации файлов .proj.

Использование CMake версии 3.12.2, которая поддерживает генерацию файлов proj VS2017.

Итакдля 64-битной компиляции Windows я использую следующий генератор

CMAKE_GENERATOR="Visual Studio 15 2017 Win64"

. Он создает файл .proj во время сборки и используется для компиляции.

Но из журналов сборкия обнаружил, что компилятор visual studio cl.exe взят из кросс-компиляции

C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/VC/Tools/MSVC/14.15.26726/bin/Hostx86/x64/cl.exe

/ Hostx86 / x64 / cl.exe используется.

Но я хочу, чтобыбыть построенным строго с использованием компилятора x64.Из /Hostx64/x64/cl.exe

Я читал из других вопросов, где люди упоминали о добавлении нескольких тегов в файл .proj, чтобы заставить vs использовать компилятор x64.

Но какя делаю это с файлом cmake?

Я не нашел никаких ссылок с этим уважением, кроме вышеизложенного упоминания о генераторе cmake.

Может ли кто-нибудь помочь мне, как использовать cmake, чтобы строго использовать VSx64-компилятор?

Примечание: я хочу, чтобы он был собран с помощью x64-компилятора, потому что я ссылаюсь на библиотеку boost, которая также скомпилирована с

address-model=64 architecture=x86

И пока основной проект компилируется, яЯ получаю ошибки, связанные с платформой.

fatal error LNK1112: module machine type 'x86' conflicts with target machine type 'x64'

Вот почему я хотел скомпилировать основной проект с помощью компилятора x64.

А также, в чем разница между Hostx86 / x64 / cl.exe и Hostsx64/x64/cl.exe?

1 Ответ

0 голосов
/ 15 октября 2018

Это обычная «проблема».По умолчанию CMake подберет 32-битный компилятор, что обычно хорошо, за исключением таких проектов, как LLVM.

Используйте -T host=x64 (см. https://cmake.org/cmake/help/v3.11/generator/Visual%20Studio%2015%202017.html) для использования собственного 64-битного компилятора.

Обратите внимание, что последняя запись в пути - это целевая платформа, а не хост-платформа, поэтому и 32-битный, и 64-битный компиляторы будут генерировать 64-битный код.

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