BLF_DLL/CMakeLists.txt

37 lines
1.2 KiB
CMake

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)