mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-17 03:18:07 +00:00
- Fix cmake error (remove object from executable)
- Rewrite import/export libraries - Fix LIBDIR for all platforms - Do not try to build plugins if no one exist
This commit is contained in:
parent
39dc65266e
commit
7ba41675d1
6 changed files with 63 additions and 38 deletions
|
|
@ -58,7 +58,12 @@ set(LINPHONE_OUTPUT_DIR "${CMAKE_BINARY_DIR}/linphone-sdk/desktop")
|
|||
|
||||
set(APPLICATION_OUTPUT_DIR "${CMAKE_BINARY_DIR}/OUTPUT")
|
||||
|
||||
set(CMAKE_PREFIX_PATH "${LINPHONE_OUTPUT_DIR};${APPLICATION_OUTPUT_DIR};${APPLICATION_OUTPUT_DIR}/include${PREFIX_PATH};${CMAKE_BINARY_DIR}/linphone-app")
|
||||
set(CMAKE_PREFIX_PATH "${LINPHONE_OUTPUT_DIR};${APPLICATION_OUTPUT_DIR};${APPLICATION_OUTPUT_DIR}/include${PREFIX_PATH}")
|
||||
if(WIN32)
|
||||
set( CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH};${APPLICATION_OUTPUT_DIR}/${CMAKE_INSTALL_BINDIR}")
|
||||
else()
|
||||
set( CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH};${APPLICATION_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}")
|
||||
endif()
|
||||
string(REPLACE ";" "|" PREFIX_PATH "${CMAKE_PREFIX_PATH}")
|
||||
#set(PREFIX_PATH "${LINPHONE_OUTPUT_DIR}|${APPLICATION_OUTPUT_DIR}${PREFIX_PATH}")
|
||||
|
||||
|
|
@ -145,6 +150,26 @@ if(UNIX AND NOT APPLE)
|
|||
set(CMAKE_INSTALL_RPATH "$ORIGIN:$ORIGIN/lib64:$ORIGIN/../lib64:$ORIGIN/lib:$ORIGIN/../lib:${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}")
|
||||
list(APPEND APP_OPTIONS "-DCMAKE_INSTALL_RPATH=${CMAKE_INSTALL_RPATH}")
|
||||
endif()
|
||||
|
||||
|
||||
|
||||
if(ENABLE_BUILD_APP_PLUGINS)
|
||||
file(GLOB children RELATIVE plugins plugins/*)
|
||||
set(dirlist "")
|
||||
foreach(child ${children})
|
||||
if(IS_DIRECTORY ${curdir}/${child} AND (ENABLE_BUILD_EXAMPLES OR NOT ${child} MATCHES "example"))
|
||||
list(APPEND dirlist ${child})
|
||||
endif()
|
||||
endforeach()
|
||||
list(LENGTH dirlist count)
|
||||
if(NOT count)
|
||||
set(ENABLE_BUILD_APP_PLUGINS OFF)
|
||||
message(STATUS "No plugins found for the application to build")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
|
||||
ExternalProject_Add(sdk PREFIX "${CMAKE_BINARY_DIR}/sdk"
|
||||
SOURCE_DIR "${CMAKE_SOURCE_DIR}/linphone-sdk"
|
||||
INSTALL_DIR "${LINPHONE_OUTPUT_DIR}"
|
||||
|
|
@ -166,8 +191,6 @@ ExternalProject_Add_Step(sdk force_build
|
|||
include(FindPkgConfig)
|
||||
|
||||
set(APP_DEPENDS sdk)
|
||||
|
||||
|
||||
find_package(Qt5 5.9 COMPONENTS Core REQUIRED)
|
||||
|
||||
if ( NOT Qt5_FOUND )
|
||||
|
|
@ -189,7 +212,6 @@ if(NOT (LinphoneCxx_FOUND) OR NOT (Linphone_FOUND) OR NOT (bctoolbox_FOUND) OR N
|
|||
BINARY_DIR "${CMAKE_BINARY_DIR}/linphone-app"
|
||||
DEPENDS ${APP_DEPENDS}
|
||||
BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config $<CONFIG> ${PROJECT_BUILD_COMMAND}
|
||||
INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Install step will not be done by external project"
|
||||
LIST_SEPARATOR | # Use the alternate list separator
|
||||
CMAKE_ARGS ${APP_OPTIONS} ${USER_ARGS} -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -DCMAKE_PREFIX_PATH=${PREFIX_PATH}
|
||||
# ${APP_OPTIONS}
|
||||
|
|
@ -200,9 +222,8 @@ if(NOT (LinphoneCxx_FOUND) OR NOT (Linphone_FOUND) OR NOT (bctoolbox_FOUND) OR N
|
|||
SOURCE_DIR "${CMAKE_SOURCE_DIR}/plugins"
|
||||
INSTALL_DIR "${APPLICATION_OUTPUT_DIR}"
|
||||
BINARY_DIR "${CMAKE_BINARY_DIR}/plugins-app"
|
||||
DEPENDS ${APP_DEPENDS} linphone-qt
|
||||
DEPENDS linphone-qt
|
||||
BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config $<CONFIG> ${PROJECT_BUILD_COMMAND}
|
||||
INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Install step is already done at build time."
|
||||
LIST_SEPARATOR | # Use the alternate list separator
|
||||
CMAKE_ARGS ${APP_OPTIONS} ${USER_ARGS} -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -DCMAKE_PREFIX_PATH=${PREFIX_PATH}
|
||||
)
|
||||
|
|
@ -224,8 +245,6 @@ else()
|
|||
add_subdirectory(${CMAKE_SOURCE_DIR}/linphone-app)
|
||||
add_dependencies(app-library ${APP_DEPENDS})
|
||||
if( ENABLE_BUILD_APP_PLUGINS)
|
||||
add_custom_command(TARGET sdk PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/linphone-app/include/" "${CMAKE_INSTALL_PREFIX}/include/")
|
||||
# set(CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH};${CMAKE_BINARY_DIR}/linphone-app")
|
||||
add_subdirectory(${CMAKE_SOURCE_DIR}/plugins "plugins-app")
|
||||
endif()
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -43,9 +43,8 @@ include(CheckCXXCompilerFlag)
|
|||
|
||||
|
||||
set(TARGET_NAME linphone-qt)
|
||||
SET_PROPERTY(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS true)
|
||||
set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS true)
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
set(CMAKE_ENABLE_EXPORTS ON)
|
||||
|
||||
if(UNIX AND NOT APPLE)
|
||||
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
|
||||
|
|
@ -405,12 +404,11 @@ if(WIN32)
|
|||
set(RC_FILE ${CMAKE_CURRENT_BINARY_DIR}/appDetailsWindows.rc)
|
||||
endif()
|
||||
|
||||
add_library(${APP_LIBRARY} OBJECT ${SOURCES} ${HEADERS} ${QML_SOURCES} ${QRC_RESOURCES})
|
||||
add_library(${APP_PLUGIN} SHARED ${PLUGIN_SOURCES} ${PLUGIN_HEADERS})
|
||||
#add_library(${APP_LIBRARY} OBJECT ${SOURCES} ${HEADERS} ${QML_SOURCES})
|
||||
add_library(${APP_LIBRARY} OBJECT ${SOURCES} ${HEADERS} ${QML_SOURCES} ${QRC_RESOURCES} ${PLUGIN_HEADERS})#Need to add Headers to resolve moc Qt symbols
|
||||
|
||||
if (WIN32)
|
||||
add_executable(${TARGET_NAME} WIN32 $<TARGET_OBJECTS:${APP_LIBRARY}> $<TARGET_OBJECTS:${APP_PLUGIN}> ${MAIN_FILE} ${QRC_BIG_RESOURCES} ${RC_FILE})
|
||||
add_executable(${TARGET_NAME} $<TARGET_OBJECTS:${APP_LIBRARY}> ${MAIN_FILE} ${QRC_BIG_RESOURCES} ${RC_FILE})
|
||||
install(TARGETS linphone-qt RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
||||
if(MSVC AND (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo"))
|
||||
install(FILES "$<TARGET_PDB_FILE:${TARGET_NAME}>" DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
|
|
@ -422,14 +420,16 @@ else ()
|
|||
add_executable(${TARGET_NAME} $<TARGET_OBJECTS:${APP_LIBRARY}> ${MAIN_FILE} ${QRC_BIG_RESOURCES})
|
||||
install(TARGETS linphone-qt RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
||||
endif ()
|
||||
set_source_files_properties( ${APP_LIBRARY} PROPERTIES EXTERNAL_OBJECT true GENERATED true )
|
||||
|
||||
|
||||
set_property(TARGET ${APP_LIBRARY} PROPERTY POSITION_INDEPENDENT_CODE ON) #Need by Qt
|
||||
set_property(TARGET ${APP_PLUGIN} PROPERTY POSITION_INDEPENDENT_CODE ON) #Need by Qt
|
||||
|
||||
|
||||
#Turn on automatic resources compilation by cmake
|
||||
#Instead of excplicitely calling qt5_add_resources
|
||||
set_property(TARGET ${APP_LIBRARY} PROPERTY AUTORCC ON)
|
||||
set_property(TARGET ${APP_PLUGIN} PROPERTY AUTORCC ON)
|
||||
|
||||
|
||||
|
||||
|
|
@ -439,16 +439,9 @@ if(MSVC)
|
|||
set_target_properties(${TARGET_NAME} PROPERTIES PDB_NAME "${EXECUTABLE_NAME}_app")
|
||||
endif()
|
||||
|
||||
#ExternalProject_Get_Property(project_a install_dir)
|
||||
#include_directories(${install_dir}/include)
|
||||
|
||||
#add_dependencies(project_b_exe project_a)
|
||||
#target_link_libraries(project_b_exe ${install_dir}/lib/alib.lib)
|
||||
|
||||
# add_definitions(-DENABLE_APP_EXPORT_PLUGIN)
|
||||
target_compile_definitions(${APP_PLUGIN} PUBLIC "-DENABLE_APP_EXPORT_PLUGIN")
|
||||
set_property(TARGET ${APP_PLUGIN} PROPERTY WINDOWS_EXPORT_ALL_SYMBOLS ON) #Need by Qt
|
||||
|
||||
set_target_properties(${APP_PLUGIN} PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON)
|
||||
|
||||
set(INCLUDED_DIRECTORIES "${LINPHONECXX_INCLUDE_DIRS}" )
|
||||
list(APPEND INCLUDED_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/include")
|
||||
|
|
@ -492,29 +485,27 @@ foreach (package ${QT5_PACKAGES_OPTIONAL})
|
|||
endif ()
|
||||
endforeach ()
|
||||
|
||||
#find_library(CONTACTS_PLUGIN_LIBRARY linphoneAppContacts HINTS "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
|
||||
#list(APPEND LIBRARIES ${CONTACTS_PLUGIN_LIBRARY})
|
||||
|
||||
if (APPLE)
|
||||
list(APPEND LIBRARIES "-framework Cocoa -framework IOKit -framework AVFoundation")
|
||||
# -framework linphone") #This doesn't work yet
|
||||
endif ()
|
||||
|
||||
target_include_directories(${APP_LIBRARY} SYSTEM PRIVATE ${INCLUDED_DIRECTORIES})
|
||||
target_include_directories(${APP_PLUGIN} SYSTEM PRIVATE ${INCLUDED_DIRECTORIES})
|
||||
target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${INCLUDED_DIRECTORIES})
|
||||
target_include_directories(${APP_LIBRARY} SYSTEM PUBLIC ${INCLUDED_DIRECTORIES})
|
||||
target_include_directories(${APP_PLUGIN} SYSTEM PUBLIC ${INCLUDED_DIRECTORIES})
|
||||
target_include_directories(${TARGET_NAME} SYSTEM PUBLIC ${INCLUDED_DIRECTORIES})
|
||||
|
||||
target_link_libraries(${APP_LIBRARY} ${LIBRARIES})
|
||||
target_link_libraries(${APP_PLUGIN} ${LIBRARIES})
|
||||
target_link_libraries(${APP_LIBRARY} ${APP_PLUGIN})
|
||||
|
||||
target_link_libraries(${TARGET_NAME} ${LIBRARIES} ${APP_PLUGIN})
|
||||
target_link_libraries(${TARGET_NAME} ${LIBRARIES})
|
||||
target_link_libraries(${TARGET_NAME} ${APP_PLUGIN})
|
||||
|
||||
if(WIN32)
|
||||
target_link_libraries(${TARGET_NAME} wsock32 ws2_32)
|
||||
endif()
|
||||
target_compile_definitions(${APP_LIBRARY} PUBLIC ENABLE_APP_EXPORT_PLUGIN)
|
||||
|
||||
add_dependencies(${APP_LIBRARY} update_translations ${TARGET_NAME}-git-version)
|
||||
add_dependencies(${APP_LIBRARY} update_translations ${TARGET_NAME}-git-version ${APP_PLUGIN})
|
||||
add_dependencies(${TARGET_NAME} ${APP_LIBRARY} ${APP_PLUGIN})
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -73,6 +73,11 @@ elseif (APPLE)
|
|||
set(LIBPREFIX "lib")
|
||||
set(LIBEXT "dylib")
|
||||
set(PLUGINEXT "so")
|
||||
else()
|
||||
set(LIBDIR ${CMAKE_INSTALL_LIBDIR})
|
||||
set(LIBPREFIX "lib")
|
||||
set(LIBEXT "so")
|
||||
set(PLUGINEXT "so")
|
||||
endif ()
|
||||
|
||||
# Removed unless it is useful to get a zip from SDK : The SDK is packaged with binaries.
|
||||
|
|
@ -94,6 +99,12 @@ endif ()
|
|||
# )
|
||||
#endif ()
|
||||
|
||||
install(TARGETS ${APP_PLUGIN}
|
||||
ARCHIVE DESTINATION "${LIBDIR}"
|
||||
LIBRARY DESTINATION "${LIBDIR}"
|
||||
RUNTIME DESTINATION "${LIBDIR}"
|
||||
)
|
||||
|
||||
# ==============================================================================
|
||||
# Specific deployment.
|
||||
# ==============================================================================
|
||||
|
|
@ -137,7 +148,6 @@ if (WIN32)
|
|||
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/../../assets/qt.conf.in" "${CMAKE_CURRENT_BINARY_DIR}/../../qt.conf" @ONLY)
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/../../qt.conf" DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
||||
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/assistant" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${EXECUTABLE_NAME}" USE_SOURCE_PERMISSIONS)
|
||||
install(TARGETS ${APP_PLUGIN} DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
||||
install(CODE "execute_process(COMMAND ${DEPLOYQT_PROGRAM} \"\${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}/${EXECUTABLE_NAME}.exe\" -qmldir=${LINPHONE_QML_DIR} --compiler-runtime)")# -verbose=2)" COMPONENT binary_application)
|
||||
|
||||
# list(REMOVE_ITEM SHARE_CONTENT "${CMAKE_INSTALL_DATAROOTDIR}/belr" "${CMAKE_INSTALL_DATAROOTDIR}/Belr" "${CMAKE_INSTALL_DATAROOTDIR}/images" "${CMAKE_INSTALL_DATAROOTDIR}/${APPLICATION_NAME}" "${CMAKE_INSTALL_DATAROOTDIR}/${APPLICATION_NAME}" "${CMAKE_INSTALL_DATAROOTDIR}/sounds")
|
||||
|
|
@ -183,7 +193,11 @@ elseif (APPLE)
|
|||
message("Changing RPATH of ${LIBRARY_FILENAME} from '${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}' to '@executable_path/../Frameworks'")
|
||||
execute_process(COMMAND install_name_tool -rpath "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}" "@executable_path/../Frameworks" "${LIBRARY}")
|
||||
endforeach ()
|
||||
install(TARGETS ${APP_PLUGIN} DESTINATION "${APPLICATION_NAME}.app/Contents/Frameworks")
|
||||
install(TARGETS ${APP_PLUGIN}
|
||||
ARCHIVE DESTINATION "${APPLICATION_NAME}.app/Contents/Frameworks"
|
||||
LIBRARY DESTINATION "${APPLICATION_NAME}.app/Contents/Frameworks"
|
||||
RUNTIME DESTINATION "${APPLICATION_NAME}.app/Contents/Frameworks"
|
||||
)
|
||||
install(CODE "execute_process(COMMAND install_name_tool -add_rpath \"@executable_path/../Frameworks/\" \"\${CMAKE_INSTALL_PREFIX}/${APPLICATION_NAME}.app/Contents/MacOS/${EXECUTABLE_NAME}\")")
|
||||
install(CODE "execute_process(COMMAND install_name_tool -add_rpath \"@executable_path/../lib/\" \"\${CMAKE_INSTALL_PREFIX}/${APPLICATION_NAME}.app/Contents/MacOS/${EXECUTABLE_NAME}\")")
|
||||
if(ENABLE_APP_PACKAGING)
|
||||
|
|
@ -256,9 +270,9 @@ else()# Not Windows and Apple
|
|||
foreach (DIR ${ICON_DIRS})
|
||||
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/icons/hicolor/${DIR}/apps/icon.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/${DIR}/apps/" RENAME "${EXECUTABLE_NAME}.png")
|
||||
endforeach ()
|
||||
install(TARGETS ${APP_PLUGIN} DESTINATION "${CMAKE_INSTALL_LIBDIR}")
|
||||
endif ()
|
||||
|
||||
|
||||
if (MSVC)
|
||||
# string(REGEX REPLACE "Visual Studio ([0-9]+).*" "\\1" MSVC_VERSION "${CMAKE_GENERATOR}")
|
||||
include(InstallRequiredSystemLibraries)
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
#include <QVariantMap>
|
||||
|
||||
#ifdef ENABLE_APP_EXPORT_PLUGIN
|
||||
#include "include/LinphoneApp/LinphonePlugin.hpp"
|
||||
#include "LinphonePlugin.hpp"
|
||||
#else
|
||||
#include <LinphoneApp/LinphonePlugin.hpp>
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
|
||||
#ifdef ENABLE_APP_EXPORT_PLUGIN
|
||||
#include "include/LinphoneApp/LinphonePlugin.hpp"
|
||||
#include "LinphonePlugin.hpp"
|
||||
#else
|
||||
#include <LinphoneApp/LinphonePlugin.hpp>
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -20,8 +20,9 @@
|
|||
|
||||
#include "PluginsManager.hpp"
|
||||
//#include "ContactsImporterModel.hpp"
|
||||
#include "include/LinphoneApp/LinphonePlugin.hpp"
|
||||
#include "include/LinphoneApp/PluginNetworkHelper.hpp"
|
||||
#include "../../../include/LinphoneApp/LinphonePlugin.hpp"
|
||||
#include "../../../include/LinphoneApp/PluginDataAPI.hpp"
|
||||
#include "../../../include/LinphoneApp/PluginNetworkHelper.hpp"
|
||||
|
||||
#include "utils/Utils.hpp"
|
||||
#include "app/paths/Paths.hpp"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue