diff --git a/CommonLib/CMakeLists.txt b/CommonLib/CMakeLists.txt index 6f965e2..9feeb9a 100644 --- a/CommonLib/CMakeLists.txt +++ b/CommonLib/CMakeLists.txt @@ -25,25 +25,28 @@ set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$:JUCE_DISABLE_NATIVE_FILECHOOSERS=1> $<$:DEBUG=1> $<$:_DEBUG=1> - $<$:NDEBUG=1> + $<$>:NDEBUG=1> ) - + set(SOURCE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Source) file(GLOB_RECURSE SRC_FILES LIST_DIRECTORIES false "${SOURCE_PATH}/*.cpp") file(GLOB_RECURSE HEADER_FILES LIST_DIRECTORIES false "${SOURCE_PATH}/*.h") list(APPEND SRC_FILES ${HEADER_FILES}) set(GUI_COMMONLIB_DIR ${GUI_BASE_DIR}/installed_libs) -set(CONFIGURATION_FOLDER $<$:Debug>$<$>:Release>) - -list(APPEND CMAKE_PREFIX_PATH ${GUI_COMMONLIB_DIR} ${GUI_COMMONLIB_DIR}/${CONFIGURATION_FOLDER}) +list(APPEND CMAKE_PREFIX_PATH + ${GUI_COMMONLIB_DIR} + ${GUI_COMMONLIB_DIR}/$ + ${GUI_COMMONLIB_DIR}/Release # default to Release if, e.g., a RelWithDebInfo build of a library is not available + ) +# TODO, still broken on multi-config platforms due to find_library add_library(${COMMONLIB_NAME} SHARED ${SRC_FILES}) target_compile_features(${COMMONLIB_NAME} PUBLIC cxx_auto_type cxx_generalized_initializers) target_include_directories(${COMMONLIB_NAME} PUBLIC ${GUI_BASE_DIR}/JuceLibraryCode ${GUI_BASE_DIR}/JuceLibraryCode/modules ${GUI_BASE_DIR}/Plugins/Headers ${GUI_COMMONLIB_DIR}/include) -set(GUI_BIN_DIR ${GUI_BASE_DIR}/Build/${CONFIGURATION_FOLDER}) +set(GUI_BIN_DIR ${GUI_BASE_DIR}/Build/$) if (NOT CMAKE_LIBRARY_ARCHITECTURE) if (CMAKE_SIZEOF_VOID_P EQUAL 8) @@ -54,10 +57,9 @@ if (NOT CMAKE_LIBRARY_ARCHITECTURE) endif() install(TARGETS ${COMMONLIB_NAME} - LIBRARY DESTINATION ${GUI_COMMONLIB_DIR}/${CONFIGURATION_FOLDER}/lib/${CMAKE_LIBRARY_ARCHITECTURE} - CONFIGURATIONS ${CMAKE_CONFIGURATION_TYPES} - ARCHIVE DESTINATION ${GUI_COMMONLIB_DIR}/${CONFIGURATION_FOLDER}/lib/${CMAKE_LIBRARY_ARCHITECTURE} - CONFIGURATIONS ${CMAKE_CONFIGURATION_TYPES} + LIBRARY DESTINATION ${GUI_COMMONLIB_DIR}/$/lib/${CMAKE_LIBRARY_ARCHITECTURE} + ARCHIVE DESTINATION ${GUI_COMMONLIB_DIR}/$/lib/${CMAKE_LIBRARY_ARCHITECTURE} + RUNTIME DESTINATION ${GUI_COMMONLIB_DIR}/$/bin/${CMAKE_LIBRARY_ARCHITECTURE} ) install(FILES ${HEADER_FILES} DESTINATION ${GUI_COMMONLIB_DIR}/include) @@ -65,18 +67,24 @@ install(FILES ${HEADER_FILES} DESTINATION ${GUI_COMMONLIB_DIR}/include) if(MSVC) target_link_libraries(${COMMONLIB_NAME} ${GUI_BIN_DIR}/open-ephys.lib) target_compile_options(${COMMONLIB_NAME} PRIVATE /sdl-) - - install(TARGETS ${COMMONLIB_NAME} RUNTIME DESTINATION ${GUI_BIN_DIR}/shared CONFIGURATIONS ${CMAKE_CONFIGURATION_TYPES}) - install(TARGETS ${COMMONLIB_NAME} RUNTIME DESTINATION ${GUI_COMMONLIB_DIR}/${CONFIGURATION_FOLDER}/bin/${CMAKE_LIBRARY_ARCHITECTURE} CONFIGURATIONS ${CMAKE_CONFIGURATION_TYPES}) + + install(TARGETS ${COMMONLIB_NAME} RUNTIME DESTINATION ${GUI_BIN_DIR}/shared) + + # also install any dependency DLLs + install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../libs/bin/${CMAKE_LIBRARY_ARCHITECTURE}/ + DESTINATION ${GUI_BIN_DIR}/shared OPTIONAL) + list(APPEND CMAKE_PREFIX_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../libs) + elseif(LINUX) target_link_libraries(${COMMONLIB_NAME} GL X11 Xext Xinerama asound dl freetype pthread rt) set_property(TARGET ${COMMONLIB_NAME} APPEND_STRING PROPERTY LINK_FLAGS - "-fvisibility=hidden -fPIC -rdynamic -Wl,-rpath,'$$ORIGIN'") + "-fvisibility=hidden -fPIC -rdynamic -Wl,-rpath,'$ORIGIN'") target_compile_options(${COMMONLIB_NAME} PRIVATE -fPIC -rdynamic) target_compile_options(${COMMONLIB_NAME} PRIVATE -O3) #enable optimization for linux debug - + install(TARGETS ${COMMONLIB_NAME} LIBRARY DESTINATION ${GUI_BIN_DIR}/shared) + elseif(APPLE) set_target_properties(${COMMONLIB_NAME} PROPERTIES BUNDLE FALSE) set_property(TARGET ${COMMONLIB_NAME} APPEND_STRING PROPERTY LINK_FLAGS