2013-03-16 9 views
12

मैं निम्नलिखित लेआउट के साथ एक परियोजना है शामिल नहीं पा सकते हैं:CMake फ़ाइलों

/build 
    /source 
     +--- CMakeLists.txt 
     | 
     +--- /bin 
     |  +--CMakefiles.txt 
     |  +--main.cpp 
     | 
     +--- /jsoncpp 
     |  +--- /json 
     |  |  +--json.h 
     |  |  +--json-forwards.h 
     |  | 
     |  +--jsoncpp.cpp 
     |  +--CMakeLists.txt 
     | 
     +--- /jsonreader 
       +-- jsonreader.cpp 
       +-- jsonreader.h 
       +-- CMakeLists.txt 

/source/CMakeLists.txt में मैं कोड की इस पंक्ति है,

include_directories(jsoncpp jsonreader) 

लेकिन फिर निर्माण निर्देशिका में चल रहे 'cmake जी "MSYS Makefiles" ../source' Makefile उत्पन्न करता है और फिर 'बनाने' निम्न त्रुटि उत्पन्न करता चल:

Scanning dependencies of target updater 
[ 33%] Building CXX object bin/CMakeFiles/updater.dir/main.cpp.obj 
In file included from k:/own-projects/updater-Project/withJsonCpp/source/bin/main.cpp:2:0: 
../source/jsonreader/jsonreader.h:2:18: fatal error: json.h: No such file 
or directory 
compilation terminated. 
make[2]: *** [bin/CMakeFiles/updater.dir/main.cpp.obj] Error 1 
make[1]: *** [bin/CMakeFiles/updater.dir/all] Error 2 
make: *** [all] Error 2 

मैं क्या कर रहा हूँ गलत और मैं इसे कैसे हल कर सकता हूं?

+0

क्या आप अपने शामिल करने के लिए jsoncpp/json नहीं जोड़ना चाहिए। या आपकी सी ++ फाइलों में आप रिश्तेदार पथ का उपयोग करते हैं? – drescherjm

+0

@drescherjm: मेरे सी ++ में मैं केवल "शामिल" हेडर का उपयोग करता हूं। "हेडर के स्थान की परवाह किए बिना यह गलत है? Jsoncpp/json जोड़ना काम नहीं करता है। – Amani

+0

मुझे विश्वास है कि आप अपने शामिल पथों को $ { CMAKE_SOURCE_DIR} – drescherjm

उत्तर

16

वहाँ दो समस्याएं थीं। सबसे पहले आपको अपनी निर्देशिकाओं में पथ jsoncpp/json जोड़ने की आवश्यकता है। हालांकि यह एक दूसरी समस्या की ओर इशारा किया। के बाद से अपने निष्पादनयोग्य नहीं स्रोत फ़ोल्डर में आप अपने रास्तों को ${CMAKE_SOURCE_DIR} उपसर्ग के लिए इतना include_directories() ऐसा दिखाई देगा की जरूरत:

include_directories("${CMAKE_SOURCE_DIR}/jsoncpp" 
    "${CMAKE_SOURCE_DIR}/jsoncpp/json" 
    "${CMAKE_SOURCE_DIR}/jsonreader") 

मैं उद्धरण जोड़ा सिर्फ आदत से बाहर। मैं अपने अधिकांश CMakeLists.txt के साथ ऐसा करता हूं इसलिए पथों में रिक्त स्थान के साथ कोई समस्या नहीं है।

+0

मुझे यह जवाब आरओएस प्रोजेक्ट के माध्यम से मिला। संभावित भविष्य के आगंतुकों के लिए मुझे ' include_directories (शामिल) ' – Jacksonkr

5

अमानी,

ऐसा लगता है जैसे कि आप अपने रिश्तेदार पथ के बिना "json.h" शामिल हैं। आप या तो इस तरह इसे शामिल कर सकते हैं:

#include "json/json.h" 

या, अपने CMakeLists.txt फ़ाइल में शामिल करने के लिए निर्देशिका json निर्देशिका जोड़ें:

include_directories(jsoncpp jsoncpp/json jsonreader)