如何使用 cmake 将文件夹路径包含到 C/C++ 程序中
How to include a folder path using cmake into a C/C++ program
我的 C++ 程序需要一个文件夹路径,我喜欢从 cmake 配置中输入。
比如我的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")
但我在我的 ccmake.. 配置中没有看到 CAFFE_MODEL_PATH。
那么我怎样才能将该路径包含到我的程序中呢?
"easy"方式:
add_definitions(-DCAFFE_MODEL_PATH=\"${CAFFE_MODEL_PATH}\")
然后在代码中使用CAFFE_MODEL_PATH
常量。
如果你有很多这样的定义,更优选的方法:
- 创建
yourproject-config.h.cmake
,内容类似于 #cmakedefine CAFFE_MODEL_PATH
。
- 使用
configure_file(yourproject-config.h.cmake yourproject-config.h)
- 别忘了
include_directorties(${CMAKE_CURRENT_BINARY_PATH})
#include "yourproject-config.h"
无论您何时何地需要访问常量。
我的 C++ 程序需要一个文件夹路径,我喜欢从 cmake 配置中输入。 比如我的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")
但我在我的 ccmake.. 配置中没有看到 CAFFE_MODEL_PATH。 那么我怎样才能将该路径包含到我的程序中呢?
"easy"方式:
add_definitions(-DCAFFE_MODEL_PATH=\"${CAFFE_MODEL_PATH}\")
然后在代码中使用CAFFE_MODEL_PATH
常量。
如果你有很多这样的定义,更优选的方法:
- 创建
yourproject-config.h.cmake
,内容类似于#cmakedefine CAFFE_MODEL_PATH
。 - 使用
configure_file(yourproject-config.h.cmake yourproject-config.h)
- 别忘了
include_directorties(${CMAKE_CURRENT_BINARY_PATH})
#include "yourproject-config.h"
无论您何时何地需要访问常量。