cmake: проблемы со сборкой вне дерева

С моим током CMakeLists.txt файлы, я могу построить свой проект с:

sourceDir>  cmake -G "MinGW Makefiles" .

из исходного каталога.

Однако я не могу получить сборку вне дерева:

buildDir>  cmake -G "MinGW Makefiles"  ..\MyProg

Это ошибка, которую я получаю от cmake:

CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeMinGWFindMake.cmake:20 (MESSAGE):
  sh.exe was found in your PATH, here:

  C:/Program Files (x86)/Git/bin/sh.exe

  For MinGW make to work correctly sh.exe must NOT be in your path.

  Run cmake from a shell that does not have sh.exe in your PATH.

  If you want to use a UNIX shell, then use MSYS Makefiles.

Call Stack (most recent call first):
  CMakeLists.txt:16 (project)


CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_C_COMPILER_ENV_VAR
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_C_COMPILER
CMake Error: Could not find cmake module file:S:/MyProg/build/CMakeFiles/CMakeCCompiler.cmake
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_CXX_COMPILER_ENV_VAR
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_CXX_COMPILER
CMake Error: Could not find cmake module file:S:/MyProg/build/CMakeFiles/CMakeCXXCompiler.cmake
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!

3 ответа

Решение

Я нашел грязное решение моей проблемы:

buildDir>  cmake -G "MinGW Makefiles"  ..\MyProg\
buildDir>  cmake -G "MinGW Makefiles"  ..\MyProg\

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

Дайте мне знать, если у вас есть лучшее, более логичное решение.

Это не имеет смысла, эти ошибки происходят из-за отличия в настройке среды. Обе команды запускаются из одной и той же оболочки? Кроме того, после настройки в исходном коде вы не сможете выполнить сборку из исходного кода. Итак, для проверки попробуйте это:

новостной ресурс mkdir; проверьте ваш источник здесь mkdir../build cd../build cmake -G"MinGW Makefiles" ../newsource

mkdir insource; проверьте ваш источник здесь cmake -G"MinGW Makefiles" .

Сделайте оба из одной и той же оболочки.

Я думаю, что вы должны удалить "MinGW\msys\1.0\bin" из переменной окружения PATH Windows.

Другие вопросы по тегам