Select Git revision
-
František Dvořák authoredFrantišek Dvořák authored
CVRMacros.cmake 4.15 KiB
MACRO(SETUP_CORE_LIBRARY LIB_NAME)
IF(NOT WIN32)
ADD_LIBRARY(${LIB_NAME}
${CALVR_DYNAMIC_OR_STATIC}
${LIB_PUBLIC_HEADERS}
${LIB_SRC_FILES}
)
IF(LIB_INTERNAL_LIBRARIES)
LINK_INTERNAL(${LIB_NAME} ${LIB_INTERNAL_LIBRARIES})
ENDIF(LIB_INTERNAL_LIBRARIES)
IF(LIB_EXTERNAL_INCLUDES)
INCLUDE_DIRECTORIES(${LIB_EXTERNAL_INCLUDES})
ENDIF(LIB_EXTERNAL_INCLUDES)
IF(LIB_EXTERNAL_LIBRARIES)
TARGET_LINK_LIBRARIES(${LIB_NAME} ${LIB_EXTERNAL_LIBRARIES})
ENDIF(LIB_EXTERNAL_LIBRARIES)
INSTALL(TARGETS ${LIB_NAME} DESTINATION lib)
ELSE(NOT WIN32)
SET(CALVR_WIN_PUBLIC_HEADERS ${CALVR_WIN_PUBLIC_HEADERS} ${LIB_PUBLIC_HEADERS})
SET(CALVR_WIN_EXTERNAL_INCLUDES ${CALVR_WIN_EXTERNAL_INCLUDES} ${LIB_EXTERNAL_INCLUDES})
#MESSAGE("Lib ex: ${LIB_EXTERNAL_LIBRARIES}")
SET(CALVR_WIN_EXTERNAL_LIBRARIES ${CALVR_WIN_EXTERNAL_LIBRARIES} ${LIB_EXTERNAL_LIBRARIES})
FOREACH(SRC_FILE ${LIB_SRC_FILES})
SET(CALVR_WIN_SRC_FILES ${CALVR_WIN_SRC_FILES} ${LIB_NAME}/${SRC_FILE})
ENDFOREACH(SRC_FILE ${LIB_SRC_FILES})
ENDIF(NOT WIN32)
ENDMACRO(SETUP_CORE_LIBRARY LIB_NAME)
MACRO(SETUP_MAIN_LIBRARY)
ADD_LIBRARY(${CALVR_WIN_LIB}
${CALVR_DYNAMIC_OR_STATIC}
${CALVR_WIN_PUBLIC_HEADERS}
${CALVR_WIN_SRC_FILES}
)
IF(CALVR_WIN_EXTERNAL_INCLUDES)
INCLUDE_DIRECTORIES(${CALVR_WIN_EXTERNAL_INCLUDES})
ENDIF(CALVR_WIN_EXTERNAL_INCLUDES)
#MESSAGE("Extern: ${CALVR_WIN_EXTERNAL_LIBRARIES}")
IF(CALVR_WIN_EXTERNAL_LIBRARIES)
TARGET_LINK_LIBRARIES(${CALVR_WIN_LIB} ${CALVR_WIN_EXTERNAL_LIBRARIES})
ENDIF(CALVR_WIN_EXTERNAL_LIBRARIES)
IF(MSVC)
SET_TARGET_PROPERTIES(${CALVR_WIN_LIB} PROPERTIES PREFIX "/")
FOREACH(CONF ${CMAKE_CONFIGURATION_TYPES}) # For each configuration (Debug, Release, MinSizeRel... and/or anything the user chooses)
STRING(TOUPPER "${CONF}" CONF) # Go uppercase (DEBUG, RELEASE...)
# We use "FILE(TO_CMAKE_PATH", to create nice looking paths
FILE(TO_CMAKE_PATH "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}/" TMPVAR)
SET_TARGET_PROPERTIES(${CALVR_WIN_LIB} PROPERTIES "ARCHIVE_OUTPUT_DIRECTORY_${CONF}" "${TMPVAR}")
FILE(TO_CMAKE_PATH "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/" TMPVAR)
SET_TARGET_PROPERTIES(${CALVR_WIN_LIB} PROPERTIES "RUNTIME_OUTPUT_DIRECTORY_${CONF}" "${TMPVAR}")
FILE(TO_CMAKE_PATH "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/" TMPVAR)
SET_TARGET_PROPERTIES(${CALVR_WIN_LIB} PROPERTIES "LIBRARY_OUTPUT_DIRECTORY_${CONF}" "${TMPVAR}")
ENDFOREACH(CONF ${CMAKE_CONFIGURATION_TYPES})
ENDIF(MSVC)
INSTALL(TARGETS ${CALVR_WIN_LIB} DESTINATION lib)
ENDMACRO(SETUP_MAIN_LIBRARY)
MACRO(REMOVE_OUTPUT_DIRS LIB)
IF(MSVC)
SET_TARGET_PROPERTIES(${LIB} PROPERTIES PREFIX "/")
FOREACH(CONF ${CMAKE_CONFIGURATION_TYPES}) # For each configuration (Debug, Release, MinSizeRel... and/or anything the user chooses)
STRING(TOUPPER "${CONF}" CONF) # Go uppercase (DEBUG, RELEASE...)
# We use "FILE(TO_CMAKE_PATH", to create nice looking paths
FILE(TO_CMAKE_PATH "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}/" TMPVAR)
SET_TARGET_PROPERTIES(${LIB} PROPERTIES "ARCHIVE_OUTPUT_DIRECTORY_${CONF}" "${TMPVAR}")
FILE(TO_CMAKE_PATH "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/" TMPVAR)
SET_TARGET_PROPERTIES(${LIB} PROPERTIES "RUNTIME_OUTPUT_DIRECTORY_${CONF}" "${TMPVAR}")
FILE(TO_CMAKE_PATH "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/" TMPVAR)
SET_TARGET_PROPERTIES(${LIB} PROPERTIES "LIBRARY_OUTPUT_DIRECTORY_${CONF}" "${TMPVAR}")
ENDFOREACH(CONF ${CMAKE_CONFIGURATION_TYPES})
ENDIF(MSVC)
ENDMACRO(REMOVE_OUTPUT_DIRS LIB)
MACRO(LINK_INTERNAL TRGTNAME)
FOREACH(LINKLIB ${ARGN})
IF(MSVC AND MSVC_VERSIONED_DLL)
#ADD_DEPENDENCIES(${TRGTNAME} ${LINKLIB})
#TARGET_LINK_LIBRARIES(${TRGTNAME} ${LINKLIB})
ELSE(MSVC AND MSVC_VERSIONED_DLL)
ENDIF(MSVC AND MSVC_VERSIONED_DLL)
ENDFOREACH(LINKLIB)
ENDMACRO(LINK_INTERNAL TRGTNAME)