2012-10-24 14 views
9

मैं Windows में cmake और MinGW के साथ कोड के इस (काफी जटिल) टुकड़ा संकलित करने के लिए कोशिश कर रहा हूँ:cmake समस्याओं

#include <iostream> 

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

यह CMakeLists.txt फ़ाइल (जो लिनक्स में सही ढंग से काम करता है) है:

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) 
आदेश के साथ

:

cmake -G"MinGW Makefiles" . 

मुझे ये त्रुटियां मिलती हैं:

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! 

इन त्रुटियों ने मुझे बहुत मदद नहीं की। यह लिनक्स में काम करता है, यह विंडो की कॉन्फ़िगरेशन से संबंधित कुछ होना चाहिए।

किसी भी मदद के लिए धन्यवाद!

विन्यास:
- विंडोज 7
- MinGW/जीसीसी 4.6.1

+2

CMake से त्रुटि संदेश स्पष्ट है: सुनिश्चित करें कि आप न करना पड़े अपने रास्ते में sh। यही है: अपने MSys प्रॉम्प्ट से सीएमके-जी "मिनजीडब्ल्यू मेकफ़ाइल" चलाएं। –

+0

तो मेरे रास्ते में sh.exe क्यों एक समस्या है? – odiszapc

+0

'sh shexe' कहां चलाकर मैंने इसे 'सी: \ Cygwin64 \ bin \ sh.exe' और 'C: \ Program Files \ OpenSSH'bin'sh.exe' पर पाया। मुझे उन्हें तोड़ने के बिना 'सिग्विन' और 'ओपनएसएसएच' मुख्य फ़ोल्डर को कैसे हटाया जाना चाहिए? – hyprfrcb

उत्तर

3

यह आपको अपने पथ C:/MinGW/msys/1.0/bin/ में है करने के लिए CMake और MinGW साथ परियोजनाओं पैदा करने के लिए, की वजह से है, अपने पथ से इसे हटा और जोड़ने C:/MinGW/bin/ बजाय

+0

'सी: \ ProgramData \ chocolatey \ lib \ msys2' के बारे में क्या। क्या यह पूरी तरह से असंबंधित है? – hyprfrcb

2

पथ सुधार बात से sh.exe निकाला जा रहा है।
मैं अधिक त्रुटियों मिलता है, लेकिन बाद में ...

5

आप -G "MSYS Makefiles" बजाय "MinGW Makefiles" के साथ बेहतर परिणाम हो सकते हैं - लेकिन मैं आपको चेतावनी देता - it is going to be slow