2013-03-04 6 views
31

अगर मैं जी के साथ कमांड लाइन पर संकलन सीधे, मैं सब कुछ मैं जरूरत है देख सकते हैं ++ है:उबंटू पर पठार को पहचानने के लिए सीएमके को कैसे प्राप्त करें?

:

$ g++ -pthread test.cpp 
$ ldd a.out 
    linux-vdso.so.1 => (0x00007fffd05b3000) 
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f4a1ba8d000) 
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f4a1b870000) 
    ...more... 

तब मैं इस 5-लाइन परीक्षण अनुप्रयोग के लिए एक सरल cmake फ़ाइल बनाने की कोशिश

$ cat CMakeLists.txt 
PROJECT (Test CXX) 
CMAKE_MINIMUM_REQUIRED (VERSION 2.8) 
FIND_PACKAGE (Threads REQUIRED) 
ADD_EXECUTABLE (test test.cpp) 
TARGET_LINK_LIBRARIES (test ${CMAKE_THREAD_LIBS_INIT}) 

हालांकि, मैं समझ नहीं क्यों CMake नहीं मिल रहा है क्या यह Threads के लिए उपयोग करने के लिए की जरूरत है:

$ cd build/ 
$ cmake .. 
CMake Error at /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:97 (MESSAGE): 
    Could NOT find Threads (missing: Threads_FOUND) 
Call Stack (most recent call first): 
    /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:288 (_FPHSA_FAILURE_MESSAGE) 
    /usr/share/cmake-2.8/Modules/FindThreads.cmake:166 (FIND_PACKAGE_HANDLE_STANDARD_ARGS) 
    CMakeLists.txt:4 (FIND_PACKAGE) 
-- Configuring incomplete, errors occurred! 

उत्तर

47

ओह, यह एक दर्द था! मैं शायद इस पर 2 घंटे खो दिया। यहां समाधान है:

सीएमके चीजों का परीक्षण/प्रयास करने के लिए लघु 'सी' अनुप्रयोगों का उपयोग करता है। यदि CMakeLists.txt बताता है कि सी ++ प्रोजेक्ट के लिए सी को सूचीबद्ध किए बिना प्रोजेक्ट के लिए उपयोग किया जाता है, तो उनमें से कुछ शॉर्ट्स गलत तरीके से असफल होते हैं, और फिर सेमेक सोचते हैं कि उन चीजें नहीं मिलती हैं।

PROJECT (Test CXX) 

... एक भाषा के रूप में शामिल करने के लिए सी:

PROJECT (Test C CXX) 

फिर build हटाते हैं, तो इसे पुन:, और सब कुछ

समाधान इस से CMakeLists की पहली पंक्ति को बदलने के लिए था फिर काम करता है:

rm -rf build 
mkdir build 
cd build 
cmake .. 
+3

किसी को यह ध्यान रखना होगा कि 'परियोजना ...' घोषणा 'से पहले बताई जानी चाहिए ... वास्तव में प्रयोग किया जाता है। –

संबंधित मुद्दे

 संबंधित मुद्दे