Example: Using csv‐parser with CMake and FetchContent (original) (raw)

This is a basic example of using CMake's FetchContent module to add csv-parser as a dependency.

This provides a simple way to integrate csv-parser into your project without having to copy and paste the single header version or using git submodules.

CMakeLists.txt

CMakeList.txt : CMake project for my-project, include source and define

project specific logic here.

cmake_minimum_required (VERSION 3.8) include(FetchContent)

project ("my-project")

Add source to this project's executable.

add_executable (my-executable "main.cpp")

if (CMAKE_VERSION VERSION_GREATER 3.12) set_property(TARGET my-executable PROPERTY CXX_STANDARD 20) endif()

Fetch csv-parser and make it available to my-executable

FetchContent_Declare( csv
GIT_REPOSITORY https://github.com/vincentlaucsb/csv-parser.git GIT_SHALLOW TRUE GIT_TAG 2.2.1 )

FetchContent_MakeAvailable(csv)

target_include_directories(my-executable PRIVATE csv) target_link_libraries(my-executable csv)

main.cpp

// main.cpp : Defines the entry point for the application. //

#include "csv.hpp"

using csv::operator ""_csv;

int main() { auto rows = "Actor,Character\r\n" "Will Ferrell,Ricky Bobby\r\n" "John C. Reilly,Cal Naughton Jr.\r\n" "Sacha Baron Cohen,Jean Giard\r\n"_csv;

for (auto& row : rows) {
    std::cout << row[1].get_sv() << " played by " << row[0].get_sv() << std::endl;
}

return 0;

}

Example Output

image