cmake_minimum_required(VERSION 3.16) project(scallywag C) set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD_REQUIRED ON) # Find required packages find_package(PkgConfig REQUIRED) pkg_check_modules(GTK3 REQUIRED gtk+-3.0) pkg_check_modules(CURL REQUIRED libcurl) pkg_check_modules(LIBXML2 REQUIRED libxml-2.0) # Compile GResource for embedded assets find_program(GLIB_COMPILE_RESOURCES glib-compile-resources REQUIRED) set(GRESOURCE_XML ${CMAKE_SOURCE_DIR}/src/gui/resources.gresource.xml) set(GRESOURCE_C ${CMAKE_BINARY_DIR}/resources.c) add_custom_command( OUTPUT ${GRESOURCE_C} COMMAND ${GLIB_COMPILE_RESOURCES} --target=${GRESOURCE_C} --sourcedir=${CMAKE_SOURCE_DIR}/src/gui --generate-source ${GRESOURCE_XML} DEPENDS ${GRESOURCE_XML} ${CMAKE_SOURCE_DIR}/src/gui/logo.svg COMMENT "Compiling GResource" ) # Source files set(SOURCES scallywag-ng.c src/app.c src/config.c src/http.c src/scraper/proxylister.c src/scraper/searcher.c src/gui/window.c src/gui/callbacks.c src/gui/loading.c src/util/strutil.c ${GRESOURCE_C} ) # Executable add_executable(scallywag ${SOURCES}) # Include directories target_include_directories(scallywag PRIVATE ${CMAKE_SOURCE_DIR}/src ${GTK3_INCLUDE_DIRS} ${CURL_INCLUDE_DIRS} ${LIBXML2_INCLUDE_DIRS} ) # Link libraries target_link_libraries(scallywag ${GTK3_LIBRARIES} ${CURL_LIBRARIES} ${LIBXML2_LIBRARIES} ) # Compiler flags target_compile_options(scallywag PRIVATE ${GTK3_CFLAGS_OTHER} ${CURL_CFLAGS_OTHER} ${LIBXML2_CFLAGS_OTHER} -Wall -Wextra -Wpedantic ) # Debug build option option(DEBUG_BUILD "Enable debug logging" OFF) if(DEBUG_BUILD) target_compile_definitions(scallywag PRIVATE DEBUG) endif()