Skip to content
Snippets Groups Projects
Commit cc11b0aa authored by Pascal Palenda's avatar Pascal Palenda
Browse files

Add first draft for ihta_add_library

parent 91d48f0a
Branches
No related tags found
No related merge requests found
include_guard ()
#[=======================================================================[.rst:
..command:: ihta_add_library
Macro to generate doxygen documentation with custom logo and style sheet.
::
build_doc(
SOURCES <documentation-folder...>
[README_MAINPAGE <readme-file-for-main-page>]
[COLOR_STYLE <css-style-sheet>]
[LOGO <logo-file>]
[ADD_DEV_SECTION]
[SIDEBAR_ONLY]
)
.. variable:: SIDEBAR_ONLY
Specifies, that the `doxygen-awesome-css` sidebar ony style should be used.
#]=======================================================================]
macro (ihta_add_library)
set (options)
set (oneValueArgs NAMESPACE NAME LIBRARY_TYPE INCLUDE_DIR IDE_FOLDER)
set (multiValueArgs SOURCES)
cmake_parse_arguments (IHTA_ADD_LIB "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
if (DEFINED IHTA_ADD_LIB_LIBRARY_TYPE)
set (IHTA_ADD_LIB_TYPES "STATIC" "SHARED" "INTERFACE" "OBJECT")
if (NOT (${IHTA_ADD_LIB_LIBRARY_TYPE} IN_LIST IHTA_ADD_LIB_TYPES))
message (
FATAL_ERROR
"ihta_add_library only supports the following LIBRARY_TYPE's: STATIC, SHARED, INTERFACE or OBJECT"
)
endif ()
endif ()
if (NOT DEFINED IHTA_ADD_LIB_INCLUDE_DIR)
set (IHTA_ADD_LIB_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include)
endif ()
if (DEFINED IHTA_ADD_LIB_NAMESPACE AND NOT DEFINED IHTA_ADD_LIB_IDE_FOLDER)
set (IHTA_ADD_LIB_IDE_FOLDER ${IHTA_ADD_LIB_NAMESPACE})
elseif (NOT DEFINED IHTA_ADD_LIB_NAMESPACE AND DEFINED IHTA_ADD_LIB_IDE_FOLDER)
set (IHTA_ADD_LIB_NAMESPACE ${IHTA_ADD_LIB_IDE_FOLDER})
elseif (NOT DEFINED IHTA_ADD_LIB_NAMESPACE AND NOT DEFINED IHTA_ADD_LIB_IDE_FOLDER)
message (FATAL_ERROR "ihta_add_library requires to set either a NAMESPACE or an IDE_FOLDER")
endif ()
add_library (${IHTA_ADD_LIB_NAME} ${IHTA_ADD_LIB_LIBRARY_TYPE} "")
add_library (${IHTA_ADD_LIB_NAMESPACE}::${IHTA_ADD_LIB_NAME} ALIAS ${IHTA_ADD_LIB_NAME})
target_sources (${IHTA_ADD_LIB_NAME} PRIVATE ${IHTA_ADD_LIB_SOURCES})
# Include Directory
target_include_directories (
${IHTA_ADD_LIB_NAME} PUBLIC $<BUILD_INTERFACE:${IHTA_ADD_LIB_INCLUDE_DIR}>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/${IHTA_ADD_LIB_NAME}>
)
# Required compiler features
target_compile_features (${IHTA_ADD_LIB_NAME} PUBLIC cxx_std_17)
# If build out of parent project, add parent folder library to parent project folder
if (NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
set_property (TARGET ${IHTA_ADD_LIB_NAME} PROPERTY FOLDER ${IHTA_ADD_LIB_FOLDER})
endif ()
# Organize sources in folders
GroupSourcesByFolder (${IHTA_ADD_LIB_NAME})
endmacro ()
......@@ -23,3 +23,4 @@ include (${CPM_MODULE_LOCATION})
include (${CMAKE_CURRENT_LIST_DIR}/GetCommonLibraries.cmake)
include (${CMAKE_CURRENT_LIST_DIR}/BuildDoc.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/IhtaAddLibrary.cmake)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment