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

标签 c++ cmake g++ cmake-gui

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

最佳答案

“简单”的方式:

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

然后在代码中使用CAFFE_MODEL_PATH常量。


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

  1. 使用 #cmakedefine CAFFE_MODEL_PATH 等内容创建 yourproject-config.h.cmake
  2. 使用configure_file(yourproject-config.h.cmake yourproject-config.h)
  3. 不要忘记include_directories(${CMAKE_CURRENT_BINARY_DIR})
  4. #include "yourproject-config.h" 无论何时何地您需要访问常量。

关于c++ - 如何使用 cmake 将文件夹路径包含到 C/C++ 程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42196905/

相关文章:

gcc - 构建调试目标时最好的 g++ 优化级别是什么?

C++动态绑定(bind)问题

c++ - c1010070 : Failed to load and parse the manifest

c++ - 有没有办法在 Eclipse 中为 C++ 启用 "Step into selection"?

c++ - 从四元数查看矩阵

c++ - 如何在 C++ 中寻找特定行以附加数据或将数据附加到最后一行

c++ - 用什么代替 `qt5_use_modules` ?

cmake - 如何获取 CMake 中使用的包名称?

python - 在 Windows 10 上使用 pip 安装 dlib 失败

c++ - 指示编译器忽略在 #include 中找到的 header 前缀