Hi,

A CMake project depends on the header only library STLSoft
(http://www.stlsoft.org/).
We rely on the developer having STLSoft installed or "installed"
(pointed to by an environment variable) on his system for compilation.
To make sure the developer's version is high enough, I created this
FindSTLSoft.cmake file.

Can someone read it through, and say if there are any errors or
antipatterns.
I'm still learning CMake, so I might have made mistakes.
Thank you.

By the way, if it is good enough, it can be added to the CMake distribution.

--
Mikko Koivunalho
LinkedIn: http://www.linkedin.com/in/MikkoKoivunalho
AboutMe: http://about.me/mikkokoivunalho
Blog: http://exercisesinintegrationanddelivery.blogspot.com


# - Find STLSoft
# This module finds if STLSoft is installed and determines where the
# include files and libraries are. This code sets the following
# variables:
# STLSOFT_FOUND - TRUE/FALSE - Found/not found (N.B. all upper case.)
# STLSoft_INCLUDE_DIR - path to include
# STLSoft_VERSION_MAJOR
# STLSoft_VERSION_MINOR
# STLSoft_VERSION_PATCH
# STLSoft_VERSION
# STLSoft_VERSION_COUNT
# The minimum required version of STLSoft can be specified using the
# standard CMake syntax, e.g. FIND_PACKAGE(STLSoft 1.9.117)
#
# Usage as follows:
# find_package(STLSoft)
# find_package(STLSoft 1.9.117 REQUIRED)
# find_package(STLSoft 1.9.117 EXACT QUIET REQUIRED)
#----------------------------------------------------------------------------------
include(FindPackageHandleStandardArgs)

# try to get global environment variable first...
set(_STLSOFT_ROOT "$ENV{STLSOFT}")

if(_STLSOFT_ROOT)
   set(STLSoft_INCLUDE_DIR ${_STLSOFT_ROOT}/include)
else(_STLSOFT_ROOT)
   find_path(STLSoft_INCLUDE_DIR
      NAMES
         stlsoft.h
)
endif(_STLSOFT_ROOT)

if(EXISTS "${STLSoft_INCLUDE_DIR}/stlsoft/stlsoft.h")
file(READ "${STLSoft_INCLUDE_DIR}/stlsoft/stlsoft.h" _stlsoft_h_CONTENT) string(REGEX REPLACE ".*#define[ ]+_STLSOFT_VER_MAJOR[ ]+([0-9]+).*" "\\1"
         STLSoft_VERSION_MAJOR "${_stlsoft_h_CONTENT}")
string(REGEX REPLACE ".*#define[ ]+_STLSOFT_VER_MINOR[ ]+([0-9]+).*" "\\1"
         STLSoft_VERSION_MINOR "${_stlsoft_h_CONTENT}")
string(REGEX REPLACE ".*#define[ ]+_STLSOFT_VER_REVISION[ ]+([0-9]+).*" "\\1"
         STLSoft_VERSION_PATCH "${_stlsoft_h_CONTENT}")
   set(STLSoft_VERSION
"${STLSoft_VERSION_MAJOR}.${STLSoft_VERSION_MINOR}.${STLSoft_VERSION_PATCH}")
   set(STLSoft_VERSION_COUNT 3)

   # Sets the STLSOFT_FOUND variable.
   find_package_handle_standard_args( STLSoft
         REQUIRED_VARS
            STLSoft_INCLUDE_DIR
         VERSION_VAR
            STLSoft_VERSION
   )
   mark_as_advanced(STLSoft_INCLUDE_DIR
      STLSoft_VERSION_MAJOR
      STLSoft_VERSION_MINOR
      STLSoft_VERSION_PATCH
      STLSoft_VERSION
      STLSoft_VERSION_COUNT
   )

else(EXISTS "${STLSoft_INCLUDE_DIR}/stlsoft/stlsoft.h")
   if(NOT STLSoft_FIND_QUIETLY)
message(FATAL_ERROR "No STLSoft package found... Please point us with the STLSOFT env var!")
   endif(NOT STLSoft_FIND_QUIETLY)
endif(EXISTS "${STLSoft_INCLUDE_DIR}/stlsoft/stlsoft.h")

--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers

Reply via email to