2017-02-13 13 views
2

Моя программа на C++ нуждается в пути к папке, и мне нравится вводить конфигурацию cmake. Например, моя программа с ++ являетсяКак включить путь к папке с помощью cmake в программу C/C++

int main(){ 
std::string pretrained_binary_proto("/home/Softwares/Libraries/caffe-master/models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel"); 
} 

Я хотел бы установить этот путь к папке с помощью CMake.

/home/Softwares/Libraries/caffe-master/models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel 

В моей CMakeLists.txt, я

set(CAFFE_MODEL_PATH   "/home/nyan/Softwares/Libraries/caffe-master/models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel") 

Но я не вижу, что CAFFE_MODEL_PATH в моей ccmake .. конфигурации. Тогда как я могу включить этот путь в свою программу?

ответ

1

"Легкий" путь:

add_definitions(-DCAFFE_MODEL_PATH=\"${CAFFE_MODEL_PATH}\") 

, а затем использовать CAFFE_MODEL_PATH константу в коде.


Более предпочтительным способом, если у вас есть много таких устанавливает:

  1. Создание yourproject-config.h.cmake с содержанием как #cmakedefine CAFFE_MODEL_PATH.
  2. Использование configure_file(yourproject-config.h.cmake yourproject-config.h)
  3. Не забудьте include_directorties(${CMAKE_CURRENT_BINARY_PATH})
  4. #include "yourproject-config.h" когда и wheverever вам необходимо получить доступ к константе.
+0

Если я следую предпочтительным способом, где установить CAFFE_MODEL_PATH. Если я делаю в CMakeLists.txt, как опция (CAFFE_MODEL_PATH "set path" "/home/nyan/Softwares/Libraries/caffe-master/models/bvlc_reference_caffenet/deploy.prototxt), я могу изменить ON/OFF только при ccmake. Как я могу установить весь путь в ccmake? – batuman

+0

Не объявляйте его как опцию, но 'set (CAFFE_MODEL_PATH)" CACHE PATH "Путь к модели Caffe"). 'option' - это просто ярлык для' set' с типом 'BOOL'. – arrowd