2012-10-24 5 views
9

Próbuję skompilować ten (dość skomplikowany) kawałek kodu z cmake i MinGW w Windows:problemy CWprowadä w Windows

#include <iostream> 

int main() 
{ 
    std::cout << "Test" << std::endl; 
    return 0; 
} 

Jest to plik CMakeLists.txt (który działa poprawnie w systemie Linux):

cmake_minimum_required(VERSION 2.6) 

SET(CMAKE_C_COMPILER path/to/gcc) 
SET(CMAKE_CXX_COMPILER path/to/g++) 

project(cmake_test) 

add_executable(a.exe test.cpp) 

pomocą polecenia:

cmake -G"MinGW Makefiles" . 

Otrzymuję te błędy:

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:/MinGW/msys/1.0/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:8 (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: Could not find cmake module file:C:/cmake_test/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: Could not find cmake module file:C:/cmake_test/CMakeFiles/CMakeCXXCompiler.cmake 
-- Configuring incomplete, errors occurred! 

Te błędy nie pomogły mi. Biorąc pod uwagę, że działa on w Linuksie, musi to być coś związanego z konfiguracją Window.

Dziękuję za pomoc!

Konfiguracja:
- Windows 7
- MinGW/GCC 4.6.1

+2

Komunikat o błędzie z CMake jest jasne: Sprawdź, czy nie masz sh na twojej ścieżce. To znaczy: nie uruchamiaj CMake -G "MinGW Makefiles" z monitu MSys. –

+0

Dlaczego posiadanie programu sh.exe na mojej ścieżce jest problemem? – odiszapc

+0

Uruchamiając 'where sh.exe' znalazłem go w' C: \ Cygwin64 \ bin \ sh.exe' i 'C: \ Program Files \ OpenSSH'bin'sh.exe'. W jaki sposób usunąć główne foldery 'Cygwin' i' OpenSSH 'bez ich łamania? – hyprfrcb

Odpowiedz

3

Wynika to masz na swojej drodze C:/MinGW/msys/1.0/bin/, do generowania projektów z CMake i MinGW, usunąć go z drogi i dodać C:/MinGW/bin/ zamiast

+0

Co z 'C: \ ProgramData \ chocolatey \ lib \ msys2'. Czy to zupełnie nie ma związku? – hyprfrcb

2

Usuwanie sh.exe ze ścieżki poprawiła rzeczy.
uzyskać więcej błędów, ale w późniejszym etapie ...