Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
MSVC.cmake 2.47 KiB
FUNCTION(OPENPASS_COPY_TARGET_PDB target_name pdb_inst_prefix)
  IF(MSVC)
    GET_TARGET_PROPERTY(TARGET_LOC ${target_name} DEBUG_LOCATION)
    IF(TARGET_LOC)
      GET_FILENAME_COMPONENT(TARGET_HEAD "${TARGET_LOC}" NAME_WE)
      # GET_FILENAME_COMPONENT(FNABSOLUTE  "${TARGET_LOC}" ABSOLUTE)
      GET_FILENAME_COMPONENT(TARGET_PATH "${TARGET_LOC}" PATH)
      SET(TARGET_PDB "${TARGET_PATH}/${TARGET_HEAD}.pdb")
      # MESSAGE(STATUS "PDB-File of ${target_name} is ${TARGET_PDB}")
      GET_TARGET_PROPERTY(TARGET_TYPE ${target_name} TYPE)
      IF(TARGET_TYPE)
        SET(pdb_dest )
        IF(TARGET_TYPE STREQUAL "STATIC_LIBRARY")
          SET(pdb_dest lib)
        ELSE(TARGET_TYPE STREQUAL "STATIC_LIBRARY")
          SET(pdb_dest bin)
        ENDIF(TARGET_TYPE STREQUAL "STATIC_LIBRARY")
        # maybe an optional category path given?
        IF(NOT "${ARGN}" STREQUAL "")
          SET(category_path "${ARGV2}")
        ENDIF(NOT "${ARGN}" STREQUAL "")
        INSTALL(FILES ${TARGET_PDB} DESTINATION "${pdb_inst_prefix}/${pdb_dest}${category_path}" CONFIGURATIONS "Debug") 
      ENDIF(TARGET_TYPE)
    ENDIF(TARGET_LOC)
  ENDIF(MSVC)
ENDFUNCTION(OPENPASS_COPY_TARGET_PDB)

MACRO(OPENPASS_MSVC_RUNTIME_OPTION)
  IF(MSVC)
    OPTION (MSVC_USE_STATIC_RUNTIME "Use static MS-Runtime (/MT, /MTd)" OFF)
    IF(MSVC_USE_STATIC_RUNTIME)
      FOREACH(FLAG_VAR CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO
                        CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
      IF(${FLAG_VAR} MATCHES "/MD")
        STRING(REGEX REPLACE "/MD" "/MT" BCMSVC_${FLAG_VAR} "${${FLAG_VAR}}")
        SET(${FLAG_VAR} ${BCMSVC_${FLAG_VAR}} CACHE STRING "" FORCE)
      ENDIF(${FLAG_VAR} MATCHES "/MD")
      ENDFOREACH(FLAG_VAR)
    ELSE(MSVC_USE_STATIC_RUNTIME)
      FOREACH(FLAG_VAR CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO
                        CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
      IF(${FLAG_VAR} MATCHES "/MT")
        STRING(REGEX REPLACE "/MT" "/MD" BCMSVC_${FLAG_VAR} "${${FLAG_VAR}}")
        SET(${FLAG_VAR} ${BCMSVC_${FLAG_VAR}} CACHE STRING "" FORCE)
      ENDIF(${FLAG_VAR} MATCHES "/MT")
      ENDFOREACH(FLAG_VAR)
    ENDIF(MSVC_USE_STATIC_RUNTIME)
  ENDIF(MSVC)
ENDMACRO(OPENPASS_MSVC_RUNTIME_OPTION)