2013-03-16 21 views
12

dosyaları dahil bulamıyor:CKağıt aşağıdaki düzen ile bir proje var

/source/CMakeLists.txt yılında
/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 

i bu kod satırı var;

include_directories(jsoncpp jsonreader) 

ama sonra inşa dizininde 'cmake -G 'MSYS'i Makefiles' ../source' çalışan Makefile'a üretir ve daha sonra aşağıdaki hata üretir 'yapmak' çalışan:

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 

i yapıyorum yanlış ve bunu nasıl çözebilirim? Eğer onun göreceli yol olmadan "json.h" include sanki

+0

İçerisine jsoncpp/json eklememelisiniz. Veya C++ dosyalarınızda göreceli bir yol kullanıyor musunuz? – drescherjm

+0

@drescherjm: C++ 'da sadece "include" header.h kullanıyorum "başlığın konumunun ne olduğuna bakmaksızın yanlış mı? Jsoncpp/json eklenmesi işe yaramaz. – Amani

+0

$ {ile eklediğiniz yolları eklemelisiniz. CMAKE_SOURCE_DIR} – drescherjm

cevap

16

iki sorun vardı. Öncelikle, içerme dizinlerinize jsoncpp/json yolunu eklemeniz gerekiyor. Ancak bu ikinci bir soruna işaret etti. include_directories() aşağıdaki gibi görünmelidir böylece yürütülebilir değil kaynak klasöründe size yollarına ${CMAKE_SOURCE_DIR} önüne eklemeniz gerekli beri:

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

Sadece alışkanlıktan tırnak ekledi. Bunu çoğu zaman CMakeLists.txt ile yapıyorum, böylece yollarda boşluklarla ilgili bir sorun yok.

+0

Bu cevabı bir ROS projesi ile buldum. include_directories '(dahil) – Jacksonkr

5

Amani,

görünüyor. Ya bunu böyle şunları içerebilir:

#include "json/json.h" 

VEYA senin CMakeLists.txt dosyasında dahil dizinlere json dizini ekleyin:

include_directories(jsoncpp jsoncpp/json jsonreader) 
İlgili konular