2017-08-17 160 views
0

我正在尝试使用cmake构建我的visual studio 2017项目。用C编写的程序解析一个csv文件。问题是该文件位于与c文件不同的文件夹中。我如何设置它,以便我可以使用fopen(),只需将文件的名称而不是路径?将目录包含到CSV文件Cmake

这是我的布局方案:在app_util.c

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

我们的目标是能够调用fopen(“fitness_cases.csv”),我认为应该包括目录来完成CMakeLists.txt文件中的/ userdata。我将如何做到这一点?

回答

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 

在包括文件夹中的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 "@[email protected]" 

然后我说这主要的CMakeLists.txt:

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

通过这样做,在使用CMake构建之后,我可以在程序中的任意位置使用变量CSV_DIR。