将目录包含到 CSV 文件 Cmake
Include Directory to CSV File Cmake
我正在尝试使用 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 来完成。我该怎么做?
我想出来了,但我最终做了一些与我的问题略有不同的事情。我想出了一个解决方案,可以自动检测文件的路径并将其作为宏包含在头文件中。
我的方法是在包含文件夹中创建一个 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。
我正在尝试使用 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 来完成。我该怎么做?
我想出来了,但我最终做了一些与我的问题略有不同的事情。我想出了一个解决方案,可以自动检测文件的路径并将其作为宏包含在头文件中。
我的方法是在包含文件夹中创建一个 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。