Last active
May 26, 2017 00:19
-
-
Save bagong/c1c97e4abd296dc680632af054739d9c to your computer and use it in GitHub Desktop.
A conservatively refined FindICU
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Finds the International Components for Unicode (ICU) Library | |
# | |
# ICU_FOUND - True if ICU found. | |
# ICU_I18N_FOUND - True if ICU's internationalization library found. | |
# ICU_INCLUDE_DIRS - Directory to include to get ICU headers | |
# Note: always include ICU headers as, e.g., | |
# unicode/utypes.h | |
# ICU_LIBRARIES - Libraries to link against for the common ICU | |
# ICU_I18N_LIBRARIES - Libraries to link against for ICU internationaliation | |
# (note: in addition to ICU_LIBRARIES) | |
find_package(PkgConfig) | |
pkg_check_modules(PC_ICU icu-uc) | |
# Look for the header file. | |
find_path( | |
ICU_INCLUDE_DIR | |
NAMES unicode/utypes.h | |
HINTS ${PC_ICU_INCLUDE_DIRS} | |
${PC_ICU_INCLUDEDIR} | |
${WEBKIT_LIBRARIES_INCLUDE_DIR} | |
DOC "Include directory for the ICU library") | |
mark_as_advanced(ICU_INCLUDE_DIR) | |
# Look for the libraries (debug/release). | |
set(ICU_NAMES_RELEASE icuuc cygicuuc cygicuuc32 icuuc) | |
set(ICU_NAMES_DEBUG icuucd cygicuucd cygicuuc32d icuucd) | |
find_library( | |
ICU_LIBRARY_RELEASE | |
NAMES ${ICU_NAMES_RELEASE} | |
HINTS ${PC_ICU_LIBRARY_DIRS} | |
${PC_ICU_LIBDIR} | |
${WEBKIT_LIBRARIES_LINK_DIR} | |
DOC "Libraries to link against for the common parts of ICU (Release)") | |
mark_as_advanced(ICU_LIBRARY_RELEASE) | |
find_library( | |
ICU_LIBRARY_DEBUG | |
NAMES ${ICU_NAMES_DEBUG} | |
HINTS ${PC_ICU_LIBRARY_DIRS} | |
${PC_ICU_LIBDIR} | |
${WEBKIT_LIBRARIES_LINK_DIR} | |
DOC "Libraries to link against for the common parts of ICU (Debug)") | |
mark_as_advanced(ICU_LIBRARY_DEBUG) | |
if(ICU_LIBRARY_RELEASE AND ICU_LIBRARY_DEBUG) | |
set(ICU_LIBRARY | |
debug ${ICU_LIBRARY_DEBUG} | |
optimized ${ICU_LIBRARY_RELEASE} | |
CACHE FILEPATH "Libraries to link against for the common parts of ICU") | |
else() | |
set(ICU_LIBRARY ${ICU_LIBRARY_RELEASE} CACHE FILEPATH "Libraries to link against for the common parts of ICU") | |
endif() | |
mark_as_advanced(ICU_LIBRARY) | |
unset(ICU_NAMES_RELEASE) | |
unset(ICU_NAMES_DEBUG) | |
# Copy the results to the output variables. | |
if (ICU_INCLUDE_DIR AND ICU_LIBRARY) | |
set(ICU_FOUND 1) | |
set(ICU_LIBRARIES ${ICU_LIBRARY}) | |
set(ICU_INCLUDE_DIRS ${ICU_INCLUDE_DIR}) | |
set(ICU_VERSION 0) | |
set(ICU_MAJOR_VERSION 0) | |
set(ICU_MINOR_VERSION 0) | |
file(READ "${ICU_INCLUDE_DIR}/unicode/uversion.h" _ICU_VERSION_CONENTS) | |
string(REGEX REPLACE ".*#define U_ICU_VERSION_MAJOR_NUM ([0-9]+).*" "\\1" ICU_MAJOR_VERSION "${_ICU_VERSION_CONENTS}") | |
string(REGEX REPLACE ".*#define U_ICU_VERSION_MINOR_NUM ([0-9]+).*" "\\1" ICU_MINOR_VERSION "${_ICU_VERSION_CONENTS}") | |
set(ICU_VERSION "${ICU_MAJOR_VERSION}.${ICU_MINOR_VERSION}") | |
# Look for the ICU internationalization libraries | |
pkg_check_modules(PC_ICU_I18N icu-i18n) | |
set(ICU_I18N_NAMES_RELEASE icui18n icuin cygicuin cygicuin32) | |
set(ICU_I18N_NAMES_DEBUG icui18nd icuind cygicuind cygicuin32d) | |
find_library( | |
ICU_I18N_LIBRARY_RELEASE | |
NAMES ${ICU_I18N_NAMES_RELEASE} | |
HINTS ${PC_ICU_I18N_LIBRARY_DIRS} | |
${PC_ICU_I18N_LIBDIR} | |
${WEBKIT_LIBRARIES_LINK_DIR} | |
DOC "Libraries to link against for ICU internationalization (Release)") | |
mark_as_advanced(ICU_I18N_LIBRARY_RELEASE) | |
find_library( | |
ICU_I18N_LIBRARY_DEBUG | |
NAMES ${ICU_I18N_NAMES_DEBUG} | |
HINTS ${PC_ICU_I18N_LIBRARY_DIRS} | |
${PC_ICU_I18N_LIBDIR} | |
${WEBKIT_LIBRARIES_LINK_DIR} | |
DOC "Libraries to link against for ICU internationalization (Debug)") | |
mark_as_advanced(ICU_I18N_LIBRARY_DEBUG) | |
if(ICU_I18N_LIBRARY_RELEASE AND ICU_I18N_LIBRARY_DEBUG) | |
set(ICU_I18N_LIBRARY | |
debug ${ICU_I18N_LIBRARY_DEBUG} | |
optimized ${ICU_I18N_LIBRARY_RELEASE} | |
CACHE FILEPATH "Libraries to link against for ICU internationalization") | |
else() | |
set(ICU_I18N_LIBRARY ${ICU_I18N_LIBRARY_RELEASE} CACHE FILEPATH "Libraries to link against for ICU internationalization") | |
endif() | |
mark_as_advanced(ICU_I18N_LIBRARY) | |
unset(ICU_I18N_NAMES_RELEASE) | |
unset(ICU_I18N_NAMES_DEBUG) | |
if (ICU_I18N_LIBRARY) | |
set(ICU_I18N_FOUND 1) | |
set(ICU_I18N_LIBRARIES ${ICU_I18N_LIBRARY}) | |
else () | |
set(ICU_I18N_FOUND 0) | |
set(ICU_I18N_LIBRARIES) | |
endif () | |
# Look for the ICU data libraries | |
set(ICU_DATALIB_NAMES_RELEASE icudata libicudata cygicudata cygicudata32 icudt) | |
set(ICU_DATALIB_NAMES_DEBUG icudatad libicudatad cygicudatad cygicudata32d icudtd) | |
find_library( | |
ICU_DATA_LIBRARY_RELEASE | |
NAMES ${ICU_DATALIB_NAMES_RELEASE} | |
HINTS ${PC_ICU_I18N_LIBRARY_DIRS} | |
${PC_ICU_I18N_LIBDIR} | |
${WEBKIT_LIBRARIES_LINK_DIR} | |
DOC "Libraries to link against for ICU data (Release)") | |
mark_as_advanced(ICU_DATA_LIBRARY_RELEASE) | |
find_library( | |
ICU_DATA_LIBRARY_DEBUG | |
NAMES ${ICU_DATALIB_NAMES_DEBUG} | |
HINTS ${PC_ICU_I18N_LIBRARY_DIRS} | |
${PC_ICU_I18N_LIBDIR} | |
${WEBKIT_LIBRARIES_LINK_DIR} | |
DOC "Libraries to link against for ICU data (DEBUG)") | |
mark_as_advanced(ICU_DATA_LIBRARY_DEBUG) | |
if(ICU_DATA_LIBRARY_RELEASE AND ICU_DATA_LIBRARY_DEBUG) | |
set(ICU_DATA_LIBRARY | |
debug ${ICU_DATA_LIBRARY_DEBUG} | |
optimized ${ICU_DATA_LIBRARY_RELEASE} | |
CACHE FILEPATH "Libraries to link against for ICU data") | |
else() | |
set(ICU_DATA_LIBRARY ${ICU_DATA_LIBRARY_RELEASE} CACHE FILEPATH "Libraries to link against for ICU data") | |
endif() | |
mark_as_advanced(ICU_DATA_LIBRARY) | |
unset(ICU_DATALIB_NAMES_RELEASE) | |
unset(ICU_DATALIB_NAMES_DEBUG) | |
if (ICU_DATA_LIBRARY) | |
set(ICU_DATA_FOUND 1) | |
set(ICU_DATA_LIBRARIES ${ICU_DATA_LIBRARY}) | |
else () | |
set(ICU_DATA_FOUND 0) | |
set(ICU_DATA_LIBRARIES) | |
endif () | |
else () | |
set(ICU_FOUND 0) | |
set(ICU_I18N_FOUND 0) | |
set(ICU_DATA_FOUND 0) | |
set(ICU_LIBRARIES) | |
set(ICU_I18N_LIBRARIES) | |
set(ICU_DATA_LIBRARIES) | |
set(ICU_INCLUDE_DIRS) | |
set(ICU_VERSION) | |
set(ICU_MAJOR_VERSION) | |
set(ICU_MINOR_VERSION) | |
endif () | |
if (ICU_FOUND) | |
if (NOT ICU_FIND_QUIETLY) | |
message(STATUS "Found ICU header files in ${ICU_INCLUDE_DIRS}") | |
message(STATUS "Found ICU libraries: ${ICU_LIBRARIES}") | |
message(STATUS "Found ICU internationaliation libraries: ${ICU_I18N_LIBRARIES}") | |
message(STATUS "Found ICU data libraries: ${ICU_DATA_LIBRARIES}") | |
endif () | |
else () | |
if (ICU_FIND_REQUIRED) | |
message(FATAL_ERROR "Could not find ICU") | |
else () | |
message(STATUS "Optional package ICU was not found") | |
endif () | |
endif () |
Same thing for Debug configuration:
$ grep -i ICU CMakeCache.txt
//Libraries to link against for ICU data
ICU_DATA_LIBRARY:FILEPATH=debug;C:/vcpkg/installed/x86-windows/debug/lib/icudtd.lib;optimized;C:/vcpkg/installed/x86-windows/lib/icudt.lib
//Libraries to link against for ICU data (DEBUG)
ICU_DATA_LIBRARY_DEBUG:FILEPATH=C:/vcpkg/installed/x86-windows/debug/lib/icudtd.lib
//Libraries to link against for ICU data (Release)
ICU_DATA_LIBRARY_RELEASE:FILEPATH=C:/vcpkg/installed/x86-windows/lib/icudt.lib
//Libraries to link against for ICU internationalization
ICU_I18N_LIBRARY:FILEPATH=debug;C:/vcpkg/installed/x86-windows/debug/lib/icuind.lib;optimized;C:/vcpkg/installed/x86-windows/lib/icuin.lib
//Libraries to link against for ICU internationalization (Debug)
ICU_I18N_LIBRARY_DEBUG:FILEPATH=C:/vcpkg/installed/x86-windows/debug/lib/icuind.lib
//Libraries to link against for ICU internationalization (Release)
ICU_I18N_LIBRARY_RELEASE:FILEPATH=C:/vcpkg/installed/x86-windows/lib/icuin.lib
//Include directory for the ICU library
ICU_INCLUDE_DIR:PATH=C:/vcpkg/installed/x86-windows/include
//Libraries to link against for the common parts of ICU
ICU_LIBRARY:FILEPATH=debug;C:/vcpkg/installed/x86-windows/debug/lib/icuucd.lib;optimized;C:/vcpkg/installed/x86-windows/lib/icuuc.lib
//Libraries to link against for the common parts of ICU (Debug)
ICU_LIBRARY_DEBUG:FILEPATH=C:/vcpkg/installed/x86-windows/debug/lib/icuucd.lib
//Libraries to link against for the common parts of ICU (Release)
ICU_LIBRARY_RELEASE:FILEPATH=C:/vcpkg/installed/x86-windows/lib/icuuc.lib
JavaScriptCore_LIB_DEPENDS:STATIC=general;WTF;debug;C:/vcpkg/installed/x86-windows/debug/lib/icuind.lib;optimized;C:/vcpkg/installed/x86-windows/lib/icuin.lib;general;Qt5::Core;
WTF_LIB_DEPENDS:STATIC=debug;C:/vcpkg/installed/x86-windows/debug/lib/icuind.lib;optimized;C:/vcpkg/installed/x86-windows/lib/icuin.lib;debug;C:/vcpkg/installed/x86-windows/debug/lib/icuucd.lib;optimized;C:/vcpkg/installed/x86-windows/lib/icuuc.lib;general;Qt5::Core;general;winmm;
WebCore_LIB_DEPENDS:STATIC=debug;C:/vcpkg/installed/x86-windows/debug/lib/icuucd.lib;optimized;C:/vcpkg/installed/x86-windows/lib/icuuc.lib;general;JavaScriptCore;general;WTF;general;woff2;general;C:/vcpkg/installed/x86-windows/debug/lib/jpeg.lib;optimized;C:/vcpkg/installed/x86-windows/lib/libpng16.lib;debug;C:/vcpkg/installed/x86-windows/debug/lib/libpng16d.lib;optimized;C:/vcpkg/installed/x86-windows/lib/zlib.lib;debug;C:/vcpkg/installed/x86-windows/debug/lib/zlibd.lib;general;C:/vcpkg/installed/x86-windows/lib/webp.lib;general;Shlwapi;general;version;general;C:/vcpkg/installed/x86-windows/debug/lib/libxml2.lib;general;C:/vcpkg/installed/x86-windows/debug/lib/libxslt.lib;general;Qt5::Core;general;Qt5::Gui;general;Qt5::Network;general;Qt5::Sensors;general;C:/vcpkg/installed/x86-windows/debug/lib/sqlite3.lib;optimized;C:/vcpkg/installed/x86-windows/lib/zlib.lib;debug;C:/vcpkg/installed/x86-windows/debug/lib/zlibd.lib;general;mfuuid;general;strmbase;debug;C:/vcpkg/installed/x86-windows/debug/lib/icuucd.lib;optimized;C:/vcpkg/installed/x86-windows/lib/icuuc.lib;general;JavaScriptCore;general;WTF;general;woff2;general;C:/vcpkg/installed/x86-windows/debug/lib/jpeg.lib;optimized;C:/vcpkg/installed/x86-windows/lib/libpng16.lib;debug;C:/vcpkg/installed/x86-windows/debug/lib/libpng16d.lib;optimized;C:/vcpkg/installed/x86-windows/lib/zlib.lib;debug;C:/vcpkg/installed/x86-windows/debug/lib/zlibd.lib;general;C:/vcpkg/installed/x86-windows/lib/webp.lib;general;Shlwapi;general;version;general;C:/vcpkg/installed/x86-windows/debug/lib/libxml2.lib;general;C:/vcpkg/installed/x86-windows/debug/lib/libxslt.lib;general;Qt5::Core;general;Qt5::Gui;general;Qt5::Network;general;Qt5::Sensors;general;C:/vcpkg/installed/x86-windows/debug/lib/sqlite3.lib;optimized;C:/vcpkg/installed/x86-windows/lib/zlib.lib;debug;C:/vcpkg/installed/x86-windows/debug/lib/zlibd.lib;general;mfuuid;general;strmbase;general;ANGLESupport;
WebKit_LIB_DEPENDS:STATIC=general;JavaScriptCore;general;WTF;general;WebCore;debug;C:/vcpkg/installed/x86-windows/debug/lib/icuucd.lib;optimized;C:/vcpkg/installed/x86-windows/lib/icuuc.lib;general;Qt5::Positioning;general;Qt5::Core;general;Qt5::Gui;general;Qt5::Network;
//ADVANCED property for variable: ICU_DATA_LIBRARY
ICU_DATA_LIBRARY-ADVANCED:INTERNAL=1
//ADVANCED property for variable: ICU_DATA_LIBRARY_DEBUG
ICU_DATA_LIBRARY_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: ICU_DATA_LIBRARY_RELEASE
ICU_DATA_LIBRARY_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: ICU_I18N_LIBRARY
ICU_I18N_LIBRARY-ADVANCED:INTERNAL=1
//ADVANCED property for variable: ICU_I18N_LIBRARY_DEBUG
ICU_I18N_LIBRARY_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: ICU_I18N_LIBRARY_RELEASE
ICU_I18N_LIBRARY_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: ICU_INCLUDE_DIR
ICU_INCLUDE_DIR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: ICU_LIBRARY
ICU_LIBRARY-ADVANCED:INTERNAL=1
//ADVANCED property for variable: ICU_LIBRARY_DEBUG
ICU_LIBRARY_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: ICU_LIBRARY_RELEASE
ICU_LIBRARY_RELEASE-ADVANCED:INTERNAL=1
PC_ICU_CFLAGS:INTERNAL=
PC_ICU_CFLAGS_I:INTERNAL=
PC_ICU_CFLAGS_OTHER:INTERNAL=
PC_ICU_FOUND:INTERNAL=
PC_ICU_I18N_CFLAGS:INTERNAL=
PC_ICU_I18N_CFLAGS_I:INTERNAL=
PC_ICU_I18N_CFLAGS_OTHER:INTERNAL=
PC_ICU_I18N_FOUND:INTERNAL=
PC_ICU_I18N_INCLUDEDIR:INTERNAL=
PC_ICU_I18N_LIBDIR:INTERNAL=
PC_ICU_I18N_LIBS:INTERNAL=
PC_ICU_I18N_LIBS_L:INTERNAL=
PC_ICU_I18N_LIBS_OTHER:INTERNAL=
PC_ICU_I18N_LIBS_PATHS:INTERNAL=
PC_ICU_I18N_PREFIX:INTERNAL=
PC_ICU_I18N_STATIC_CFLAGS:INTERNAL=
PC_ICU_I18N_STATIC_CFLAGS_I:INTERNAL=
PC_ICU_I18N_STATIC_CFLAGS_OTHER:INTERNAL=
PC_ICU_I18N_STATIC_LIBDIR:INTERNAL=
PC_ICU_I18N_STATIC_LIBS:INTERNAL=
PC_ICU_I18N_STATIC_LIBS_L:INTERNAL=
PC_ICU_I18N_STATIC_LIBS_OTHER:INTERNAL=
PC_ICU_I18N_STATIC_LIBS_PATHS:INTERNAL=
PC_ICU_I18N_VERSION:INTERNAL=
PC_ICU_INCLUDEDIR:INTERNAL=
PC_ICU_LIBDIR:INTERNAL=
PC_ICU_LIBS:INTERNAL=
PC_ICU_LIBS_L:INTERNAL=
PC_ICU_LIBS_OTHER:INTERNAL=
PC_ICU_LIBS_PATHS:INTERNAL=
PC_ICU_PREFIX:INTERNAL=
PC_ICU_STATIC_CFLAGS:INTERNAL=
PC_ICU_STATIC_CFLAGS_I:INTERNAL=
PC_ICU_STATIC_CFLAGS_OTHER:INTERNAL=
PC_ICU_STATIC_LIBDIR:INTERNAL=
PC_ICU_STATIC_LIBS:INTERNAL=
PC_ICU_STATIC_LIBS_L:INTERNAL=
PC_ICU_STATIC_LIBS_OTHER:INTERNAL=
PC_ICU_STATIC_LIBS_PATHS:INTERNAL=
PC_ICU_VERSION:INTERNAL=
__pkg_config_checked_PC_ICU:INTERNAL=1
__pkg_config_checked_PC_ICU_I18N:INTERNAL=1
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
CMakeCache.txt for Release configuration (vcpkg separates Release and Debug build folders):