From 8d75aad21809dbc5d51defb8fab8894c4805a3c8 Mon Sep 17 00:00:00 2001 From: Chris Rizzitello Date: Sun, 28 Aug 2022 20:42:25 -0400 Subject: [PATCH] Generate at build time non .h include headers --- src/CMakeLists.txt | 19 +++++++++++++++++-- src/data/CMakeLists.txt | 4 +--- src/formats/CMakeLists.txt | 2 +- src/utils/CMakeLists.txt | 2 +- src/widgets/common/CMakeLists.txt | 2 +- src/widgets/data/CMakeLists.txt | 2 +- 6 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 5fb0842ce..2edcd77bc 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -20,14 +20,25 @@ endif() # LIB_TARGET_PrivateLIBLINKS macro(MAKE_LIBRARY LIB_TARGET HEADER_INSTALL_DIR) - add_library (${LIB_TARGET} - SHARED + add_library (${LIB_TARGET} SHARED ${${LIB_TARGET}_SRC} ${${LIB_TARGET}_HEADERS} ${${LIB_TARGET}_RESOURCES} ) add_library (ff7tk::${LIB_TARGET} ALIAS ${LIB_TARGET}) + #Generate the non .h ending header let the user include "HEADER" or "HEADER.h" + foreach ( HEADER ${${LIB_TARGET}_HEADERS}) + if(${HEADER} MATCHES "_export.h$") + continue() + endif() + string(REPLACE ".h" "" newheader ${HEADER}) + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${newheader} + "#pragma once\n#include<${HEADER}>\n" + ) + list(APPEND EXHEADERS ${CMAKE_CURRENT_BINARY_DIR}/${newheader}) + endforeach() + if(APPLE) set_target_properties(${LIB_TARGET} PROPERTIES BUILD_WITH_INSTALL_RPATH TRUE) if(${BUILD_FRAMEWORKS}) @@ -86,6 +97,10 @@ macro(MAKE_LIBRARY LIB_TARGET HEADER_INSTALL_DIR) PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${HEADER_INSTALL_DIR} COMPONENT ff7tk_headers ) + install (FILES ${EXHEADERS} + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${HEADER_INSTALL_DIR} + COMPONENT ff7tk_headers + ) if(UNIX) if(NOT APPLE) diff --git a/src/data/CMakeLists.txt b/src/data/CMakeLists.txt index 79fb06d61..395921e3c 100644 --- a/src/data/CMakeLists.txt +++ b/src/data/CMakeLists.txt @@ -21,9 +21,7 @@ set (ff7tk_HEADERS FF7FieldItemList.h FF7Materia.h FF7Save_Types.h Type_FF7CHAR.h FF7Achievements.h FF7Item.h FF7Save.h FF7Text.h Type_FF7CHOCOBO.h FF7Char.h FF7Location.h FF7SaveInfo.h SaveIcon.h Type_materia.h - FF7ItemModel.h - ${CMAKE_CURRENT_BINARY_DIR}/ff7tk_export.h - ${CMAKE_CURRENT_BINARY_DIR}/ff7tkAbout.h + FF7ItemModel.h ff7tk_export.h ff7tkAbout.h ) set ( ff7tk_RESOURCES diff --git a/src/formats/CMakeLists.txt b/src/formats/CMakeLists.txt index 2b6ae43d1..d5ef186aa 100644 --- a/src/formats/CMakeLists.txt +++ b/src/formats/CMakeLists.txt @@ -34,7 +34,7 @@ set(ff7tkFormats_HEADERS TextureFile.h TimFile.h WindowBinFile.h - ${CMAKE_CURRENT_BINARY_DIR}/ff7tkformats_export.h + ff7tkformats_export.h ) set(ff7tkFormats_PublicLIBLINKS diff --git a/src/utils/CMakeLists.txt b/src/utils/CMakeLists.txt index f29e471be..eb440d6eb 100644 --- a/src/utils/CMakeLists.txt +++ b/src/utils/CMakeLists.txt @@ -23,7 +23,7 @@ set(ff7tkUtils_HEADERS PsColor.h PsfFile.h QLockedFile.h - ${CMAKE_CURRENT_BINARY_DIR}/ff7tkutils_export.h + ff7tkutils_export.h ) set(ff7tkUtils_PublicLIBLINKS diff --git a/src/widgets/common/CMakeLists.txt b/src/widgets/common/CMakeLists.txt index 728adb968..e639183ea 100644 --- a/src/widgets/common/CMakeLists.txt +++ b/src/widgets/common/CMakeLists.txt @@ -22,7 +22,7 @@ set(ff7tkQtWidgets_HEADERS DoubleCheckBox.h HexLineEdit.h QTaskBarButton.h - ${CMAKE_CURRENT_BINARY_DIR}/ff7tkqtwidgets_export.h + ff7tkqtwidgets_export.h ) set(ff7tkQtWidgets_PublicLIBLINKS diff --git a/src/widgets/data/CMakeLists.txt b/src/widgets/data/CMakeLists.txt index e4f957bd5..6b32b6657 100644 --- a/src/widgets/data/CMakeLists.txt +++ b/src/widgets/data/CMakeLists.txt @@ -47,7 +47,7 @@ set (ff7tkWidgets_HEADERS MateriaEditor.h OptionsWidget.h SlotSelect.h - ${CMAKE_CURRENT_BINARY_DIR}/ff7tkwidgets_export.h + ff7tkwidgets_export.h ) set( ff7tkWidgets_PublicLIBLINKS