2016-09-09 3 views
0

Я понимаю, что CMAKE_BUILD_TYPE работает только для генераторов с одной конфигурацией, таких как Unix Makefiles. Существуют также генераторы с несколькими конфигурациями, такие как Visual Studio или Xcode, где CMAKE_BUILD_TYPE не работает. (см. this и this вопрос для получения дополнительной информации). Я создал проект Visual Studio 2013 x86 с cmake-gui для libharu, и нет возможности переключиться с win32 на x64 в Visual Studio. Мне интересно, почему в мультиконфигурациях необходимо указать архитектуру (x86 или x64) в cmake? Почему это невозможно в Visual Studio напрямую? Есть ли какое-то ограничение или польза или что-то, о чем я должен знать?Зачем определять архитектуру в cmake для генераторов с несколькими конфигурациями

Благодаря

+1

Это ограничение CMake, а также вид преднамеренным. См. Здесь: http://stackoverflow.com/questions/5334095/cmake-multiarchitecture-compilation упоминается, что cmake хочет создавать разные каталоги сборки для каждого компилятора, а 32 и 64-битные компиляции рассматриваются как с другой средой компилятора/компилятора. Также cmake поощряет сборку вне источников, поэтому вы не можете объединить 64 и 32 в VS с этой филисофией. – Hayt

+0

@ Hayt спасибо за ответ, пожалуйста, разместите его как ответ, и я его приму. –

ответ

0

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

Так что, хотя это ограничение cmake, оно также является преднамеренным.

Этот ответ также упоминает об этом: https://stackoverflow.com/a/5359191/152359