我正在用C ++编写一段代码。程序应先从CSV文件读取数据,然后进行一些处理,然后再将其写入另一个CSV输出文件。我的程序在使用以下命令进行编译时可以正确读取文件:
make version1.cc
但是,当我尝试使用CMakeLists.txt进行编译时,它甚至都不会寻找文件。我到目前为止尝试了这个,但没有成功:
add_custom_command(
OUTPUT Output.csv
COMMAND version1 ${CMAKE_CURRENT_SOURCE_DIR}/Input.csv ${CMAKE_CURRENT_BINARY_DIR}/Output.csv
DEPENDS version1 ${CMAKE_CURRENT_SOURCE_DIR}/Input.csv
)
add_executable(version1 version1.cc Output.csv)
我也尝试了以下方法,但仍然没有运气:
INCLUDE_DIRECTORIES(
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}
)
SET(MY_CSV_PATH "${CMAKE_CURRENT_SOURCE_DIR}/House1-July-Complete.csv")
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/version1.cc ${CMAKE_CURRENT_BINARY_DIR}/version1.cc @ONLY)
最佳答案
长话短说:
add_executable(version1 version1.cc)
set(input_csv ${CMAKE_CURRENT_SOURCE_DIR}/Input.csv)
set(output_csv ${CMAKE_CURRENT_BINARY_DIR}/Output.csv)
add_custom_command(
OUTPUT ${output_csv}
COMMAND version1 ${input_csv} ${output_csv}
DEPENDS version1 ${input_csv}
)
add_custom_target(process_csv
ALL # means that this custom target is also included in the ALL target
DEPENDS ${output_csv}
)
然后,调用
make
,make all
或make process_csv
应该可以。