cmake_minimum_required(VERSION 3.17) project(conv) set(CMAKE_C_STANDARD 17) # Опции сборки option(BUILD_SHARED_LIB "Build shared library" ON) option(BUILD_EXAMPLE "Build example executable" ON) # Собираем все .c файлы в APP (исключая main.c для библиотеки) file(GLOB_RECURSE ALL_C_FILES "APP/*.c") set(LIB_SOURCES ${ALL_C_FILES}) # Удаляем main.c из списка библиотеки list(REMOVE_ITEM LIB_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/APP/main.c") if(BUILD_SHARED_LIB) add_library(conv SHARED ${LIB_SOURCES}) target_compile_definitions(conv PRIVATE BLF_BUILD_DLL) target_compile_options(conv PRIVATE -Os -std=c99 -D_GNU_SOURCE) target_link_libraries(conv PRIVATE m) endif() if(BUILD_EXAMPLE) if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/APP/main.c") add_executable(conv_example APP/main.c) target_link_libraries(conv_example PRIVATE conv) target_compile_options(conv_example PRIVATE -Os -std=c99 -D_GNU_SOURCE) else() message(WARNING "APP/main.c not found, example will not be built") endif() endif() # Установка install(TARGETS conv LIBRARY DESTINATION lib RUNTIME DESTINATION bin) install(FILES blf.h DESTINATION include)