如何使用CMake将文件夹路径包含到C/C++程序中

3

我的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。那么我该如何将该路径包含到我的程序中呢?

1个回答

3

“简单”的方法:

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_directories(${CMAKE_CURRENT_BINARY_DIR})
  4. 每当需要访问常量时,请添加#include "yourproject-config.h"

如果我按照首选方式操作,应该在哪里设置CAFFE_MODEL_PATH。如果我在CMakeLists.txt中这样做,例如option (CAFFE_MODEL_PATH "set path" "/home/nyan/Softwares/Libraries/caffe-master/models/bvlc_reference_caffenet/deploy.prototxt"),我只能在ccmake中更改ON/OFF。我如何在ccmake中设置整个路径? - batuman
不要将其声明为选项,而是使用set(CAFFE_MODEL_PATH“”CACHE PATH“Caffe模型路径”)option只是setBOOL类型的快捷方式。 - arrowd
1
步骤3:include_directories(${CMAKE_CURRENT_BINARY_DIR}) - Dawid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接