37 lines
1.2 KiB
CMake
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) |