我正在用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}
)


然后,调用makemake allmake process_csv应该可以。

10-01 11:15