# Project name. project(openvr_api) set( LIBNAME "openvr_api" ) set(OPENVR_HEADER_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../headers) # Set some properies for specific files. if(APPLE) set(CMAKE_MACOSX_RPATH 1) if(CMAKE_SYSTEM_NAME MATCHES "Darwin") set_source_files_properties(vrcommon/pathtools_public.cpp vrcommon/vrpathregistry_public.cpp PROPERTIES COMPILE_FLAGS "-x objective-c++") endif() if(BUILD_SHARED OR BUILD_FRAMEWORK) find_library(FOUNDATION_FRAMEWORK Foundation) mark_as_advanced(FOUNDATION_FRAMEWORK) set(EXTRA_LIBS ${EXTRA_LIBS} ${FOUNDATION_FRAMEWORK}) endif(BUILD_SHARED OR BUILD_FRAMEWORK) elseif(WIN32) if(CMAKE_SIZEOF_VOID_P EQUAL 8) add_definitions( -DWIN64 ) set( LIBNAME "openvr_api64" ) endif() endif() # Add include folders. include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../headers ${CMAKE_CURRENT_SOURCE_DIR}/vrcommon) if(USE_CUSTOM_LIBCXX) link_directories( ${LIBCXX_LIB_DIR} ) endif() # Set the source group and files. set(CORE_FILES openvr_api_public.cpp jsoncpp.cpp ) set(VRCOMMON_FILES vrcommon/dirtools_public.cpp vrcommon/envvartools_public.cpp vrcommon/pathtools_public.cpp vrcommon/sharedlibtools_public.cpp vrcommon/hmderrors_public.cpp vrcommon/vrpathregistry_public.cpp vrcommon/strtools_public.cpp ) set(SOURCE_FILES ${CORE_FILES} ${VRCOMMON_FILES} ) set(PUBLIC_HEADER_FILES ${OPENVR_HEADER_DIR}/openvr_driver.h ${OPENVR_HEADER_DIR}/openvr_capi.h ${OPENVR_HEADER_DIR}/openvr.h ) source_group("Src" FILES ${CORE_FILES} ) source_group("VRCommon" FILES ${VRCOMMON_FILES} ) # Build the library. if(BUILD_SHARED) add_library(${LIBNAME} SHARED ${SOURCE_FILES}) elseif(BUILD_FRAMEWORK) set( LIBNAME "OpenVR" ) add_library( ${LIBNAME} SHARED ${SOURCE_FILES} ${CMAKE_SOURCE_DIR}/headers/openvr.h ${CMAKE_SOURCE_DIR}/headers/openvr_api.cs ${CMAKE_SOURCE_DIR}/headers/openvr_api.json ${CMAKE_SOURCE_DIR}/headers/openvr_capi.h ${CMAKE_SOURCE_DIR}/headers/openvr_driver.h ) set_target_properties(OpenVR PROPERTIES FRAMEWORK TRUE FRAMEWORK_VERSION A MACOSX_FRAMEWORK_IDENTIFIER com.valvesoftware.OpenVR.framework MACOSX_FRAMEWORK_INFO_PLIST ${CMAKE_SOURCE_DIR}/src/Info.plist # "current version" in semantic format in Mach-O binary file VERSION 1.0.6 # "compatibility version" in semantic format in Mach-O binary file SOVERSION 1.0.0 PUBLIC_HEADER "${CMAKE_SOURCE_DIR}/headers/openvr.h;${CMAKE_SOURCE_DIR}/headers/openvr_api.cs;${CMAKE_SOURCE_DIR}/headers/openvr_api.json;${CMAKE_SOURCE_DIR}/headers/openvr_capi.h;${CMAKE_SOURCE_DIR}/headers/openvr_driver.h" LINKER_LANGUAGE CXX ) else() add_library(${LIBNAME} STATIC ${SOURCE_FILES}) endif() if(USE_CUSTOM_LIBCXX) set(EXTRA_LIBS ${EXTRA_LIBS} c++ c++abi) endif() target_link_libraries(${LIBNAME} ${EXTRA_LIBS} ${CMAKE_DL_LIBS}) target_include_directories(${LIBNAME} PUBLIC ${OPENVR_HEADER_DIR}) install(TARGETS ${LIBNAME} DESTINATION lib) install(FILES ${PUBLIC_HEADER_FILES} DESTINATION include/openvr) # Generate a .pc file for linux environments if(PLATFORM_NAME MATCHES "linux") set(INSTALL_PKGCONFIG_DIR "${CMAKE_INSTALL_PREFIX}/share/pkgconfig" CACHE PATH "Installation directory for pkgconfig (.pc) files") CONFIGURE_FILE("openvr.pc.in" "openvr.pc" @ONLY) set(OPENVR_PC ${CMAKE_CURRENT_BINARY_DIR}/openvr.pc) if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL ) install(FILES ${OPENVR_PC} DESTINATION "${INSTALL_PKGCONFIG_DIR}") endif() endif()