findace.cmake

来自「一个语言识别引擎」· CMAKE 代码 · 共 128 行

CMAKE
128
字号
########################################################################
## check pkg-config for ace information, if available

# SOURCE: KDE
# File: [SVN] / trunk / KDE / kdesdk / cmake / modules / UsePkgConfig.cmake
# Revision: 501797, Mon Jan 23 22:03:18 2006 UTC by neundorf

# - pkg-config module for CMake
# Defines the following macros:
#   PKGCONFIG(package includedir libdir linkflags cflags)
#     - Calling PKGCONFIG will fill the desired information into the 4
#     given arguments, e.g. PKGCONFIG(libart-2.0 LIBART_INCLUDE_DIR
#     LIBART_LINK_DIR LIBART_LINK_FLAGS LIBART_CFLAGS) if pkg-config
#     was not found or the specified software package doesn't exist,
#     the variable will be empty when the function returns, otherwise
#     they will contain the respective information

FIND_PROGRAM(PKGCONFIG_EXECUTABLE NAMES pkg-config PATHS /usr/local/bin)
MARK_AS_ADVANCED(PKGCONFIG_EXECUTABLE)

MACRO(PKGCONFIG _package _include_DIR _link_DIR _link_FLAGS _cflags)
# reset the variables at the beginning
  SET(${_include_DIR})
  SET(${_link_DIR})
  SET(${_link_FLAGS})
  SET(${_cflags})

# if pkg-config has been found
  IF(PKGCONFIG_EXECUTABLE)

    EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS ${_package} --exists RETURN_VALUE _return_VALUE OUTPUT_VARIABLE _pkgconfigDevNull )

# and if the package of interest also exists for pkg-config, then get the information
    IF(NOT _return_VALUE)

      EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS ${_package} --variable=includedir OUTPUT_VARIABLE ${_include_DIR} )

      EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS ${_package} --variable=libdir OUTPUT_VARIABLE ${_link_DIR} )

      EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS ${_package} --libs-only-l --libs-only-other OUTPUT_VARIABLE ${_link_FLAGS} )

      EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS ${_package} --cflags OUTPUT_VARIABLE ${_cflags} )

    ENDIF(NOT _return_VALUE)

  ENDIF(PKGCONFIG_EXECUTABLE)

ENDMACRO(PKGCONFIG _include_DIR _link_DIR _link_FLAGS _cflags)

SET(ACE_INCLUDE_DIR_GUESS)
SET(ACE_LIBRARY_DIR_GUESS)
SET(ACE_LINK_FLAGS)
IF(PKGCONFIG_EXECUTABLE)
	PKGCONFIG(ace ACE_INCLUDE_DIR_GUESS ACE_LIBRARY_DIR_GUESS ACE_LINK_FLAGS ACE_C_FLAGS)
	IF (NOT ACE_LINK_FLAGS)
		PKGCONFIG(ACE ACE_INCLUDE_DIR_GUESS ACE_LIBRARY_DIR_GUESS ACE_LINK_FLAGS ACE_C_FLAGS)
	ENDIF (NOT ACE_LINK_FLAGS)
	ADD_DEFINITIONS(${ACE_C_FLAGS})
ENDIF(PKGCONFIG_EXECUTABLE)
SET(ACE_LINK_FLAGS "${ACE_LINK_FLAGS}" CACHE INTERNAL "ace link flags")


########################################################################
##  general find

FIND_PATH(ACE_INCLUDE_DIR ace/ACE.h ${CMAKE_SOURCE_DIR}/../ACE_wrappers/ ${CMAKE_SOURCE_DIR}/../../ACE_wrappers/ ${CMAKE_SOURCE_DIR}/../../../ACE_wrappers/ /usr/include /usr/local/include $ENV{ACE_ROOT} DOC "directory containing ace/*.h for ACE library")

# in YARP1, config was in another directory
SET(ACE_INCLUDE_CONFIG_DIR "" CACHE STRING "location of ace/config.h")
MARK_AS_ADVANCED(ACE_INCLUDE_CONFIG_DIR)

FIND_LIBRARY(ACE_LIBRARY NAMES ACE ace PATHS ${CMAKE_SOURCE_DIR}/../ACE_wrappers/lib/ ${CMAKE_SOURCE_DIR}/../../ACE_wrappers/lib/ ${CMAKE_SOURCE_DIR}/../../../ACE_wrappers/lib/ /usr/lib /usr/local/lib $ENV{ACE_ROOT}/lib $ENV{ACE_ROOT} DOC "ACE library file")

IF (WIN32 AND NOT CYGWIN)
	SET(CMAKE_DEBUG_POSTFIX "d")
	FIND_LIBRARY(ACE_DEBUG_LIBRARY NAMES ACE${CMAKE_DEBUG_POSTFIX} ace${CMAKE_DEBUG_POSTFIX} PATHS ${CMAKE_SOURCE_DIR}/../ACE_wrappers/lib/ ${CMAKE_SOURCE_DIR}/../../ACE_wrappers/lib/ ${CMAKE_SOURCE_DIR}/../../../ACE_wrappers/lib/ /usr/lib /usr/local/lib $ENV{ACE_ROOT}/lib $ENV{ACE_ROOT} DOC "ACE library file (debug version)")
ENDIF (WIN32 AND NOT CYGWIN)


########################################################################
## finished - now just set up flags and complain to user if necessary

IF (ACE_INCLUDE_DIR AND ACE_LIBRARY)
	SET(ACE_FOUND TRUE)
ELSE (ACE_INCLUDE_DIR AND ACE_LIBRARY)
	SET(ACE_FOUND FALSE)
ENDIF (ACE_INCLUDE_DIR AND ACE_LIBRARY)

IF (ACE_DEBUG_LIBRARY)
	SET(ACE_DEBUG_FOUND TRUE)
ENDIF (ACE_DEBUG_LIBRARY)

IF (ACE_DEBUG_FOUND)
 LINK_LIBRARIES(optimized ${ACE_LIBRARY} debug ${ACE_DEBUG_LIBRARY})
 SET(ACE_LIB "optimized ${ACE_LIBRARY} debug ${ACE_DEBUG_LIBRARY}" CACHE INTERNAL "libraries")
ELSE (ACE_DEBUG_FOUND)
 LINK_LIBRARIES(${ACE_LIBRARY})
 SET(ACE_LIB "${ACE_LIBRARY}" CACHE INTERNAL "libraries")
ENDIF (ACE_DEBUG_FOUND)

IF (WIN32 AND NOT CYGWIN)
  LINK_LIBRARIES(winmm)
  SET(ACE_LIB "${ACE_LIB} winmm" CACHE INTERNAL "libraries")
ENDIF (WIN32 AND NOT CYGWIN)


IF (ACE_FOUND)
	INCLUDE_DIRECTORIES(${ACE_INCLUDE_DIR})
	LINK_LIBRARIES(${ACE_LINK_FLAGS})

	# on windows, we have to tell ace how it was compiled
	IF (WIN32 AND NOT CYGWIN)
	   ADD_DEFINITIONS(-DWIN32 -D_WINDOWS)
	ELSE (WIN32 AND NOT CYGWIN)
	   # flush out warnings
	   ADD_DEFINITIONS(-Wall)
	ENDIF (WIN32 AND NOT CYGWIN)

	IF (NOT Ace_FIND_QUIETLY)
		MESSAGE(STATUS "Found ACE library: ${ACE_LIBRARY}")
		MESSAGE(STATUS "Found ACE include: ${ACE_INCLUDE_DIR}")
	ENDIF (NOT Ace_FIND_QUIETLY)
ELSE (ACE_FOUND)
	IF (Ace_FIND_REQUIRED)
		MESSAGE(FATAL_ERROR "Could not find ACE")
	ENDIF (Ace_FIND_REQUIRED)
ENDIF (ACE_FOUND)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?