使用cmake C ++包含数据(.json)文件

时间:2019-01-05 23:05:47

标签: cmake visual-studio-2017

我正在使用Visual Studio 2017,并使用C ++进行编码。我的代码有时从.json文件读取,但收到一条错误消息,指出找不到该文件。我假设这是因为cmake无法找到文件。 .json位于cmake文件所在目录的子目录中。我已经看到了很多解决方案,这些解决方案涉及包含具有相对路径的源文件,但是涉及非源文件。

如何使用cmake和相对路径包含数据文件?预先感谢!

编辑:很抱歉,最初没有包含更多信息!目录结构如下:

  • 项目目录
    • 子目录1
      • CMakeList.txt A
      • 子目录2
        • CMakeList.txt B
        • 从.JSON文件读取的
        • .cpp源文件
        • 包含.JSON文件的子目录
          • .JSON文件被引用

在不同目录中有2个CMakeList.txt文件,而我想在我的C ++代码中使用的包含.JSON文件的子目录位于最低级别的目录中。

当前,CMakeList.txt B使用: add_executable(execName ${SOURCE_FILES}) 生成可执行文件。 我试图将那条线修改为: add_executable(execName ${RELATIVE_PATH_TO_JSON_FILES} ${SOURCE_FILES}) ,但不幸的是,这没有用。

2 个答案:

答案 0 :(得分:0)

作为快速技巧,您可以添加

add_definitions("-DPATH_TO_JSON=\"${CMAKE_SOURCE_DIR}/path/to/json.txt\")

到您的CMakeLists.txt。之后,您可以在C ++代码中使用PATH_TO_JSON定义。

如果希望您的应用在安装后能够访问文件,则应在CMAKE_INSTALL_PREFIX而不是CMAKE_SOURCE_DIR上进行操作。

答案 1 :(得分:0)

include_directories(${CMAKE_SOURCE_DIR}/path/to/json)