如何使用 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常量。


如果你有很多这样的定义,更优选的方法:

  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" 无论您何时何地需要访问常量。