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)
project(myx-cmake VERSION 0.2.0 LANGUAGES)
project(myx-cmake VERSION 0.2.4 LANGUAGES)
include(GNUInstallDirs)
file(WRITE ${CMAKE_SOURCE_DIR}/MyxCMake/MyxCMakeConfigVersion.cmake

View File

@ -1,5 +1,10 @@
# Создание динамической библиотеки из объектной библиотеки
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)
if(NOT __target_type STREQUAL OBJECT_LIBRARY)
message(
@ -19,5 +24,4 @@ function(myx_cmake_add_shared_library target)
install(TARGETS ${target}-shared
COMPONENT main
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
endfunction()

View File

@ -1,5 +1,10 @@
# Создание статической библиотеки из объектной библиотеки
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)
if(NOT __target_type STREQUAL OBJECT_LIBRARY)
message(

View File

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