feat: support generate cmake with qt function
authorIceyer <me@iceyer.net>
Thu, 22 Feb 2018 03:34:40 +0000 (11:34 +0800)
committerIceyer <me@iceyer.net>
Thu, 22 Feb 2018 03:34:40 +0000 (11:34 +0800)
Change-Id: I38fe8a0edb2f0901b32a7fd11bcfca9d723000f4

cmake/DtkCore/DtkCoreConfig.cmake.in [deleted file]
src/dtk_cmake.prf
src/src.pro

diff --git a/cmake/DtkCore/DtkCoreConfig.cmake.in b/cmake/DtkCore/DtkCoreConfig.cmake.in
deleted file mode 100644 (file)
index cc7eb96..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-
-set(DTKCORE_INCLUDE_DIR "/usr/include/libdtk-2.0.6/DCore")
-set(DtkCore_LIBRARIES dtkcore)
-include_directories("${INCLUDE_INSTALLED_DIR}")
index 33bdf9eebaaa0aa9e2bc62761cd77e4cc33acaf2..e3f2d57c8ebbe8467561287e7290b1fb526563b3 100644 (file)
@@ -2,20 +2,45 @@
 
 #TODO: check cmake exist
 
+defineReplace(capitalizingString) {
+    RAW=$$1
+    FIRST = $$upper($$section(RAW, "", 1, 1))
+    OTHERS = $$section(RAW, "", 2, -1)
+    return($$FIRST$$OTHERS)
+}
+
 !win*: {
-isEmpty(CMAKE_MODULE): error("CMAKE_MODULE must not empty")
+
+MODULE_DEPENDS=$$find(QT, dtk*)
+CMAKE_MODULE_DEPENDS=$$replace(MODULE_DEPENDS,"dtk","")
+
+MODULE_NAME=$$replace(TARGET,"dtk","")
+MODULE_NAME=$$capitalizingString($$MODULE_NAME)
+CMAKE_MODULE=Dtk$$MODULE_NAME
 WORK_DIR=$$_PRO_FILE_PWD_
 
 message("config cmake module: $$CMAKE_MODULE")
 
+MODULE_PRI_CONT = ""
+
+for(MODULE_DEPEND, CMAKE_MODULE_DEPENDS) {
+    MODULE_DEPEND=$$capitalizingString($$MODULE_DEPEND)
+    CMAKE_CONTENT += "find_package(Dtk REQUIRED $$MODULE_DEPEND)"
+}
+
 CMAKE_MODULE_INCLUDE_DIR=$$upper($${CMAKE_MODULE})_INCLUDE_DIR
+INC_DIR = $$replace(includes.path, "/", "/")
+
+CMAKE_CONTENT += "set($${CMAKE_MODULE_INCLUDE_DIR} \"$${INC_DIR}\")"
+CMAKE_CONTENT += "set($${CMAKE_MODULE}_LIBRARIES $$TARGET)"
+CMAKE_CONTENT += "include_directories(\"${"$${CMAKE_MODULE_INCLUDE_DIR}"}\")"
 
-INC_DIR = $$replace(includes.path, "/", "\/")
-CMD = sed -E \'s/$${CMAKE_MODULE_INCLUDE_DIR} \".*\"\\)$/$${CMAKE_MODULE_INCLUDE_DIR} \"$${INC_DIR}\"\\)/\' $$WORK_DIR/../cmake/$${CMAKE_MODULE}/$${CMAKE_MODULE}Config.cmake.in > $$WORK_DIR/../cmake/$${CMAKE_MODULE}/$${CMAKE_MODULE}Config.cmake
-message("write cmake file to: $$WORK_DIR/../cmake/$${CMAKE_MODULE}/$${CMAKE_MODULE}Config.cmake")
-system($$CMD) | error("config cmake failed")
+CMAKE_PATH=$$WORK_DIR/../cmake/$${CMAKE_MODULE}/$${CMAKE_MODULE}Config.cmake
+mkpath($$WORK_DIR/../cmake/$${CMAKE_MODULE})
+message("write cmake file to: $$CMAKE_PATH")
+write_file($$CMAKE_PATH, CMAKE_CONTENT) | error("Aborting.")
 
-cmake_config.files = $$PWD/../cmake
+cmake_config.files = $$WORK_DIR/../cmake
 cmake_config.path = $$LIB_INSTALL_DIR
 
 INSTALLS += cmake_config
index c009e9286406db0c5d736284efa8a2f2602ad54c..13e8fb9cec56f1d7aad6ed9365935fbeda1cbf4a 100644 (file)
@@ -82,8 +82,8 @@ includes.path = $${DTK_INCLUDEPATH}/DCore
 INSTALLS += includes target
 
 #cmake
-CMAKE_MODULE=DtkCore
 include(dtk_cmake.prf)
+#qt module
 include(dtk_module.prf)
 
 prf.files+= $$PWD/*.prf