将目录包含在CSV文件Cmake中

时间:2017-08-17 02:55:54

标签: c csv cmake include-path

我正在尝试使用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来完成。我该怎么做?

1 个答案:

答案 0 :(得分:0)

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

我这样做的方法是在include文件夹中创建一个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

include文件夹中的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。