# CMakeLists.txt for a single file project cmake_minimum_required(VERSION 3.15) get_filename_component(FNAME ${CMAKE_SOURCE_DIR} NAME) set(ProjectName ${FNAME}) project(${ProjectName} LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CXX_STANDARD_REQUIRED ON) set(CMAKE_BUILD_TYPE Debug) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++20") set(EXECUTABLE_OUTPUT_PATH bin) string(SUBSTRING ${ProjectName} 0 1 ProjectFirstLetter) string(TOLOWER ${ProjectFirstLetter} ProjectFirstLetterLowered) string(SUBSTRING ${ProjectName} 1 -1 ProjectOtherLetters) string(CONCAT ExecutableName ${ProjectFirstLetterLowered} ${ProjectOtherLetters}) find_package(Catch2 3 REQUIRED) add_executable(tests src/tests/tests.cpp) target_link_libraries(tests PRIVATE Catch2::Catch2WithMain pqxx pq) add_executable(${ExecutableName} src/main.cpp) target_link_libraries(${ExecutableName} pqxx pq)