Permalink
Browse files

Add FindQxt.cmake module for detecting installed Qxt Library

  • Loading branch information...
1 parent c146917 commit 30555ae2b640a53fc5158b0dad0e0c30ebb1f4c1 @DOOMer committed Sep 21, 2012
Showing with 155 additions and 0 deletions.
  1. +155 −0 cmake/FindQxt.cmake
View
@@ -0,0 +1,155 @@
+#############
+## basic FindQxt.cmake
+## This is an *EXTREMELY BASIC* cmake find/config file for
+## those times you have a cmake project and wish to use
+## libQxt.
+##
+## It should be noted that at the time of writing, that
+## I (mschnee) have an extremely limited understanding of the
+## way Find*.cmake files work, but I have attempted to
+## emulate what FindQt4.cmake and a few others do.
+##
+## To enable a specific component, set your QXT_USE_${modname}:
+## SET(QXT_USE_QXTCORE TRUE)
+## SET(QXT_USE_QXTGUI FALSE)
+## Currently available components:
+## QxtCore, QxtGui, QxtNetwork, QxtWeb, QxtSql
+## Auto-including directories are enabled with INCLUDE_DIRECTORIES(), but
+## can be accessed if necessary via ${QXT_INCLUDE_DIRS}
+##
+## To add the libraries to your build, TARGET_LINK_LIBRARIES(), such as...
+## TARGET_LINK_LIBRARIES(YourTargetNameHere ${QXT_LIBRARIES})
+## ...or..
+## TARGET_LINK_LIBRARIES(YourTargetNameHere ${QT_LIBRARIES} ${QXT_LIBRARIES})
+################### TODO:
+## The purpose of this cmake file is to find what components
+## exist, regardless of how libQxt was build or configured, thus
+## it should search/find all possible options. As I am not aware
+## that any module requires anything special to be used, adding all
+## modules to ${QXT_MODULES} below should be sufficient.
+## Eventually, there should be version numbers, but
+## I am still too unfamiliar with cmake to determine how to do
+## version checks and comparisons.
+## At the moment, this cmake returns a failure if you
+## try to use a component that doesn't exist. I don't know how to
+## set up warnings.
+## It would be nice having a FindQxt.cmake and a UseQxt.cmake
+## file like done for Qt - one to check for everything in advance
+
+##############
+
+###### setup
+SET(QXT_MODULES QxtGui QxtWeb QxtZeroConf QxtNetwork QxtSql QxtBerkeley QxtCore)
+SET(QXT_FOUND_MODULES)
+FOREACH(mod ${QXT_MODULES})
+ STRING(TOUPPER ${mod} U_MOD)
+ SET(QXT_${U_MOD}_INCLUDE_DIR NOTFOUND)
+ SET(QXT_${U_MOD}_LIB_DEBUG NOTFOUND)
+ SET(QXT_${U_MOD}_LIB_RELEASE NOTFOUND)
+ SET(QXT_FOUND_${U_MOD} FALSE)
+ENDFOREACH(mod)
+SET(QXT_QXTGUI_DEPENDSON QxtCore)
+SET(QXT_QXTWEB_DEPENDSON QxtCore QxtNetwork)
+SET(QXT_QXTZEROCONF_DEPENDSON QxtCore QxtNetwork)
+SET(QXT_QXTNETWORK_DEPENDSON QxtCore)
+SET(QXT_QXTQSQL_DEPENDSON QxtCore)
+SET(QXT_QXTBERKELEY_DEPENDSON QxtCore)
+
+FOREACH(mod ${QXT_MODULES})
+ STRING(TOUPPER ${mod} U_MOD)
+ FIND_PATH(QXT_${U_MOD}_INCLUDE_DIR ${mod}
+ PATH_SUFFIXES ${mod} include/${mod} Qxt/include/${mod} include/Qxt/${mod}
+ PATHS
+ ~/Library/Frameworks/
+ /Library/Frameworks/
+ /sw/
+ /usr/local/
+ /usr
+ /opt/local/
+ /opt/csw
+ /opt
+ "C:\\"
+ "C:\\Program Files\\"
+ "C:\\Program Files(x86)\\"
+ NO_DEFAULT_PATH
+ )
+ FIND_LIBRARY(QXT_${U_MOD}_LIB_RELEASE NAME ${mod}
+ PATH_SUFFIXES Qxt/lib64 Qxt/lib lib64 lib
+ PATHS
+ /sw
+ /usr/local
+ /usr
+ /opt/local
+ /opt/csw
+ /opt
+ "C:\\"
+ "C:\\Program Files"
+ "C:\\Program Files(x86)"
+ NO_DEFAULT_PATH
+ )
+ FIND_LIBRARY(QXT_${U_MOD}_LIB_DEBUG NAME ${mod}d
+ PATH_SUFFIXES Qxt/lib64 Qxt/lib lib64 lib
+ PATHS
+ /sw
+ /usr/local
+ /usr
+ /opt/local
+ /opt/csw
+ /opt
+ "C:\\"
+ "C:\\Program Files"
+ "C:\\Program Files(x86)"
+ NO_DEFAULT_PATH
+ )
+ IF (QXT_${U_MOD}_LIB_RELEASE)
+ SET(QXT_FOUND_MODULES "${QXT_FOUND_MODULES} ${mod}")
+ ENDIF (QXT_${U_MOD}_LIB_RELEASE)
+
+ IF (QXT_${U_MOD}_LIB_DEBUG)
+ SET(QXT_FOUND_MODULES "${QXT_FOUND_MODULES} ${mod}")
+ ENDIF (QXT_${U_MOD}_LIB_DEBUG)
+ENDFOREACH(mod)
+
+FOREACH(mod ${QXT_MODULES})
+ STRING(TOUPPER ${mod} U_MOD)
+ IF(QXT_${U_MOD}_INCLUDE_DIR AND QXT_${U_MOD}_LIB_RELEASE)
+ SET(QXT_FOUND_${U_MOD} TRUE)
+ ENDIF(QXT_${U_MOD}_INCLUDE_DIR AND QXT_${U_MOD}_LIB_RELEASE)
+ENDFOREACH(mod)
+
+
+##### find and include
+# To use a Qxt Library....
+# SET(QXT_FIND_COMPONENTS QxtCore, QxtGui)
+# ...and this will do the rest
+IF( QXT_FIND_COMPONENTS )
+ FOREACH( component ${QXT_FIND_COMPONENTS} )
+ STRING( TOUPPER ${component} _COMPONENT )
+ SET(QXT_USE_${_COMPONENT}_COMPONENT TRUE)
+ ENDFOREACH( component )
+ENDIF( QXT_FIND_COMPONENTS )
+
+SET(QXT_LIBRARIES "")
+SET(QXT_INCLUDE_DIRS "")
+
+# like FindQt4.cmake, in order of dependence
+FOREACH( module ${QXT_MODULES} )
+ STRING(TOUPPER ${module} U_MOD)
+ IF(QXT_USE_${U_MOD} OR QXT_DEPENDS_${U_MOD})
+ IF(QXT_FOUND_${U_MOD})
+ STRING(REPLACE "QXT" "" qxt_module_def "${U_MOD}")
+ ADD_DEFINITIONS(-DQXT_${qxt_module_def}_LIB)
+ SET(QXT_INCLUDE_DIRS ${QXT_INCLUDE_DIRS} ${QXT_${U_MOD}_INCLUDE_DIR})
+ INCLUDE_DIRECTORIES(${QXT_${U_MOD}_INCLUDE_DIR})
+ SET(QXT_LIBRARIES ${QXT_LIBRARIES} ${QXT_${U_MOD}_LIB_RELEASE})
+ ELSE(QXT_FOUND_${U_MOD})
+ MESSAGE("Could not find Qxt Module ${module}")
+ RETURN()
+ ENDIF(QXT_FOUND_${U_MOD})
+ FOREACH(dep ${QXT_${U_MOD}_DEPENDSON})
+ STRING(TOUPPER ${dep} U_DEP)
+ SET(QXT_DEPENDS_${U_DEP} TRUE)
+ ENDFOREACH(dep)
+ ENDIF(QXT_USE_${U_MOD} OR QXT_DEPENDS_${U_MOD})
+ENDFOREACH(module)
+MESSAGE(STATUS "Found Qxt Libraries:${QXT_FOUND_MODULES}")

0 comments on commit 30555ae

Please sign in to comment.