vincentlaucsb / csv-parser

A high-performance, fully-featured CSV parser and serializer for modern C++.
MIT License
901 stars 150 forks source link

Linker error in Debug mode, apprently due to "--coverage" #184

Open oschonrock opened 3 years ago

oschonrock commented 3 years ago

This is the linker error... googling suggests, it is to do with --coverage

/usr/bin/ld: lib/libcsv.a(basic_csv_parser.cpp.o): in function `__llvm_gcov_writeout':
basic_csv_parser.cpp:(.text+0x7324): undefined reference to `llvm_gcda_start_file'
/usr/bin/ld: basic_csv_parser.cpp:(.text+0x7349): undefined reference to `llvm_gcda_emit_function'
/usr/bin/ld: basic_csv_parser.cpp:(.text+0x735c): undefined reference to `llvm_gcda_emit_arcs'
/usr/bin/ld: basic_csv_parser.cpp:(.text+0x736b): undefined reference to `llvm_gcda_summary_info'
/usr/bin/ld: basic_csv_parser.cpp:(.text+0x7370): undefined reference to `llvm_gcda_end_file'
/usr/bin/ld: lib/libcsv.a(basic_csv_parser.cpp.o): in function `__llvm_gcov_init':

.... (many more similar lines)

commenting out this line in csv-parser/CMakeLists.txt

  set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} --coverage -Og")

works around the problem

this is with clang-12 on ubuntu 20.04 and both ld and lld

T-Maxxx commented 3 years ago

I met same problem. There is no problem with single include header file. But when I try to switch to a static library + common header file same error occured in my libraries. The reason I want to do it because single header brings some warnings I have to shut down (my project errors are treated as errors). Same OS, clang-12 (compiled by myself with compiler-rt), linker is lld. Please, disable code coverage flag by default just like you did with CSV_DEVELOPER. Thank you.

ionovanton commented 1 year ago

Adding link_libraries(gcov) to CMakeLists.txt apparently fixes the issue.