-
Notifications
You must be signed in to change notification settings - Fork 156
Example: Using csv‐parser with CMake and FetchContent
Vincent La edited this page May 18, 2024
·
5 revisions
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.
# 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 : 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;
}