【问题标题】:Include Directory to CSV File Cmake将目录包含到 CSV 文件 Cmake
【发布时间】:2017-08-17 02:55:54
【问题描述】:

我正在尝试使用 cmake 构建我的 Visual Studio 2017 项目。该程序用 C 编写,解析一个 csv 文件。问题是该文件与 c 文件位于不同的文件夹中。我将如何设置它以便我可以通过给它文件名而不是路径来使用 fopen()?

这是我的程序的布局:

|--include
|   |--header_files.h
|--src
|   |--util
|   |   |--app_util.c
|   |   |--other_files.c
|   |--main
|   |   |--app.c
|--userdata
|   |--fitness_cases.csv
|--CMakeLists.txt

目标是能够在 app_util.c 中调用 fopen("fitness_cases.csv"),我认为这应该通过在 CMakeLists.txt 文件中包含目录 /userdata 来完成。我该怎么做?

【问题讨论】:

    标签: c csv cmake include-path


    【解决方案1】:

    我想通了,但我最终做了一些与我的问题略有不同的事情。我想出了一个自动检测文件路径并将其作为宏包含在头文件中的解决方案。

    我这样做的方法是在包含文件夹中创建一个 CMakeLists.txt 文件。然后我让它通过搜索 csv 文件是 userdata 来配置一个包含路径宏的头文件。然后我将新的 CMakeLists.txt 包含在主文件中。

    这是我的程序的设置:

    |--include
    |   |--header_files.h
    |   |--CMakeLists.txt
    |   |--csv_file.h.in
    |--src
    |   |--util
    |   |   |--app_util.c
    |   |   |--other_files.c
    |   |--main
    |   |   |--app.c
    |--userdata
    |   |--fitness_cases.csv
    |--CMakeLists.txt
    

    包含文件夹中的 CMakeLists.txt 文件如下所示:

    #Search for csv file
    file(GLOB CSV_DIR "data/*.csv" )
    
    # configure the header.
    set(DIR_STRING "${CSV_DIR}")
    configure_file("include/params.h.in" "include/params.h")
    
    # Includes the new header
    include_directories(${CMAKE_CURRENT_BINARY_DIR})
    

    csv_file.h.in 只是一行:

    #cmakedefine CSV_DIR "@DIR_STRING@"
    

    然后我将它添加到主 CMakeLists.txt 中:

    include("${DIR}/include/CMakeLists.txt")
    

    通过这样做,在使用 CMake 构建它之后,我可以在程序的任何地方使用变量 CSV_DIR。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-29
      • 1970-01-01
      • 2015-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多