2017-08-17 9 views
0

私は、visual studio 2017プロジェクトを構築するためにcmakeを使用しようとしています。 Cで書かれたプログラムは、csvファイルを解析します。問題は、ファイルがcファイルとは異なるフォルダにあることです。どのように私はfopen()を使うことができるので、パスではなくファイルの名前を与えるだけですか?ディレクトリをCSVファイルにインクルードする

これは私のプログラムのレイアウトです:、目標はapp_util.cにはfopen(「fitness_cases.csv」)を呼び出すことができるようにすることです

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

私はディレクトリを含めることによって行われるべきだと思うどの/ userdataをCMakeLists.txtファイルに保存します。どうすればいい?

答えて

0

私はそれを理解しましたが、私の質問に尋ねたものとは多少異なることをしました。私は、ファイルのパスを自動的に検出し、それをヘッダーファイルにマクロとして含めるソリューションを考え出しました。

私のやり方は、インクルードフォルダに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をプログラムのどこにでも使用できます。

関連する問題