Compare commits

..

2 Commits

4 changed files with 25 additions and 13 deletions

View File

@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 3.0) cmake_minimum_required(VERSION 3.0)
project(myx-cmake VERSION 0.2.0 LANGUAGES) project(myx-cmake VERSION 0.2.4 LANGUAGES)
include(GNUInstallDirs) include(GNUInstallDirs)
file(WRITE ${CMAKE_SOURCE_DIR}/MyxCMake/MyxCMakeConfigVersion.cmake file(WRITE ${CMAKE_SOURCE_DIR}/MyxCMake/MyxCMakeConfigVersion.cmake

View File

@ -1,5 +1,10 @@
# Создание динамической библиотеки из объектной библиотеки # Создание динамической библиотеки из объектной библиотеки
function(myx_cmake_add_shared_library target) function(myx_cmake_add_shared_library target)
myx_cmake_canonical_string(${target} _ctarget)
option(BUILD_${_ctarget}_SHARED "build shared library ${_ctarget}" ON)
if(NOT BUILD_${_ctarget}_SHARED)
return()
endif()
get_target_property(__target_type ${target} TYPE) get_target_property(__target_type ${target} TYPE)
if(NOT __target_type STREQUAL OBJECT_LIBRARY) if(NOT __target_type STREQUAL OBJECT_LIBRARY)
message( message(
@ -19,5 +24,4 @@ function(myx_cmake_add_shared_library target)
install(TARGETS ${target}-shared install(TARGETS ${target}-shared
COMPONENT main COMPONENT main
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
endfunction() endfunction()

View File

@ -1,5 +1,10 @@
# Создание статической библиотеки из объектной библиотеки # Создание статической библиотеки из объектной библиотеки
function(myx_cmake_add_static_library target) function(myx_cmake_add_static_library target)
myx_cmake_canonical_string(${target} _ctarget)
option(BUILD_${_ctarget}_STATIC "build static library ${_ctarget}" ON)
if(NOT BUILD_${_ctarget}_STATIC)
return()
endif()
get_target_property(__target_type ${target} TYPE) get_target_property(__target_type ${target} TYPE)
if(NOT __target_type STREQUAL OBJECT_LIBRARY) if(NOT __target_type STREQUAL OBJECT_LIBRARY)
message( message(

View File

@ -1,39 +1,42 @@
function(myx_cmake_generate_pkgconfig target) function(myx_cmake_generate_pkgconfig target)
set(options) set(options)
set(oneVA COMPONENT) set(oneVA COMPONENT BASENAME)
set(multiVA) set(multiVA)
cmake_parse_arguments(ARG "${options}" "${oneVA}" "${multiVA}" ${ARGN}) cmake_parse_arguments(ARG "${options}" "${oneVA}" "${multiVA}" ${ARGN})
if(NOT ARG_BASENAME)
set(ARG_BASENAME ${target})
endif()
if(NOT ARG_COMPONENT) if(NOT ARG_COMPONENT)
set(ARG_COMPONENT dev) set(ARG_COMPONENT dev)
endif() endif()
get_target_property(_target_type ${target} TYPE) get_target_property(__target_type ${target} TYPE)
if(__target_type STREQUAL INTERFACE_LIBRARY)
if(_target_type STREQUAL INTERFACE_LIBRARY)
file( file(
WRITE "${CMAKE_BINARY_DIR}/${target}.pc" WRITE "${CMAKE_BINARY_DIR}/${BASENAME}.pc"
"prefix=${CMAKE_INSTALL_PREFIX}\n" "prefix=${CMAKE_INSTALL_PREFIX}\n"
"exec_prefix=${CMAKE_INSTALL_PREFIX}\n" "exec_prefix=${CMAKE_INSTALL_PREFIX}\n"
"includedir=${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}\n" "includedir=${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}\n"
"\n" "\n"
"Name: ${target}\n" "Name: ${BASENAME}\n"
"Description: ${target} header-only library\n" "Description: ${BASENAME} header-only library\n"
"Version: ${PROJECT_VERSION}\n" "Version: ${PROJECT_VERSION}\n"
"\n" "\n"
"Requires:\n" "Requires:\n"
"Cflags: -I${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}\n") "Cflags: -I${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}\n")
else() else()
file( file(
WRITE "${CMAKE_BINARY_DIR}/${target}.pc" WRITE "${CMAKE_BINARY_DIR}/${BASENAME}.pc"
"prefix=${CMAKE_INSTALL_PREFIX}\n" "prefix=${CMAKE_INSTALL_PREFIX}\n"
"exec_prefix=${CMAKE_INSTALL_PREFIX}\n" "exec_prefix=${CMAKE_INSTALL_PREFIX}\n"
"libdir=${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}\n" "libdir=${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}\n"
"includedir=${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}\n" "includedir=${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}\n"
"\n" "\n"
"Name: ${target}\n" "Name: ${BASENAME}\n"
"Description: ${target} library\n" "Description: ${BASENAME} library\n"
"Version: ${PROJECT_VERSION}\n" "Version: ${PROJECT_VERSION}\n"
"\n" "\n"
"Requires:\n" "Requires:\n"
@ -41,7 +44,7 @@ function(myx_cmake_generate_pkgconfig target)
"Cflags: -I${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}\n") "Cflags: -I${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}\n")
endif() endif()
install( install(
FILES "${CMAKE_BINARY_DIR}/${target}.pc" FILES "${CMAKE_BINARY_DIR}/${BASENAME}.pc"
COMPONENT ${ARG_COMPONENT} COMPONENT ${ARG_COMPONENT}
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
endfunction() endfunction()