mirror of
https://github.com/UltraCoderRU/libwebrtc.git
synced 2026-01-28 03:15:11 +00:00
Fix PATH
Add single-configuration generators support on Windows
This commit is contained in:
parent
5a40775960
commit
c8cdba02bc
5 changed files with 63 additions and 28 deletions
|
|
@ -16,7 +16,12 @@ list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
|
||||||
include(FindLibraries)
|
include(FindLibraries)
|
||||||
include(TargetOsAndCpu)
|
include(TargetOsAndCpu)
|
||||||
|
|
||||||
set(ENV{PATH} "${CMAKE_SOURCE_DIR}/depot_tools:$ENV{PATH}")
|
include(Utils)
|
||||||
|
prependPath("${CMAKE_SOURCE_DIR}/depot_tools")
|
||||||
|
if (WIN32)
|
||||||
|
set(ENV{DEPOT_TOOLS_WIN_TOOLCHAIN} 0)
|
||||||
|
endif()
|
||||||
|
|
||||||
set(WEBRTC_SOURCE_DIR "${CMAKE_SOURCE_DIR}/webrtc/src")
|
set(WEBRTC_SOURCE_DIR "${CMAKE_SOURCE_DIR}/webrtc/src")
|
||||||
set(WEBRTC_BUILD_DIR "${CMAKE_BINARY_DIR}/webrtc")
|
set(WEBRTC_BUILD_DIR "${CMAKE_BINARY_DIR}/webrtc")
|
||||||
|
|
||||||
|
|
@ -26,7 +31,6 @@ message(STATUS "WebRTC version: ${WEBRTC_VERSION}")
|
||||||
|
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
# Always build with dynamic runtime on MSVC
|
# Always build with dynamic runtime on MSVC
|
||||||
include(PatchFile)
|
|
||||||
patch_file(${WEBRTC_SOURCE_DIR}/build/config/win/BUILD.gn ":static_crt" ":dynamic_crt")
|
patch_file(${WEBRTC_SOURCE_DIR}/build/config/win/BUILD.gn ":static_crt" ":dynamic_crt")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,6 @@
|
||||||
function(add_webrtc_target SOURCE_DIR BUILD_DIR)
|
function(add_webrtc_target SOURCE_DIR BUILD_DIR)
|
||||||
|
|
||||||
set(GEN_ARGS_COMMON "target_cpu=\"${TARGET_CPU}\" target_os=\"${TARGET_OS}\" is_component_build=false use_gold=false use_custom_libcxx=false use_custom_libcxx_for_host=false rtc_enable_protobuf=false")
|
set(GEN_ARGS_COMMON "target_cpu=\"${TARGET_CPU}\" target_os=\"${TARGET_OS}\" is_component_build=false use_gold=false use_custom_libcxx=false use_custom_libcxx_for_host=false rtc_enable_protobuf=false rtc_build_examples=false rtc_build_tools=false")
|
||||||
|
|
||||||
if (MSVC)
|
|
||||||
set(GEN_ARGS_COMMON "${GEN_ARGS_COMMON} is_clang=false")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
set(GEN_ARGS_DEBUG "${GEN_ARGS_COMMON} is_debug=true")
|
set(GEN_ARGS_DEBUG "${GEN_ARGS_COMMON} is_debug=true")
|
||||||
set(GEN_ARGS_RELEASE "${GEN_ARGS_COMMON} is_debug=false")
|
set(GEN_ARGS_RELEASE "${GEN_ARGS_COMMON} is_debug=false")
|
||||||
|
|
@ -19,14 +15,18 @@ function(add_webrtc_target SOURCE_DIR BUILD_DIR)
|
||||||
set(GN_EXECUTABLE gn)
|
set(GN_EXECUTABLE gn)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (MSVC)
|
macro(run_gn DIRECTORY)
|
||||||
|
execute_process(COMMAND ${GN_EXECUTABLE} gen ${DIRECTORY} "--args=${GEN_ARGS}" WORKING_DIRECTORY ${SOURCE_DIR})
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
if (CMAKE_GENERATOR MATCHES "Visual Studio")
|
||||||
# Debug config
|
# Debug config
|
||||||
message(STATUS "Running gn for debug configuration...")
|
message(STATUS "Running gn for debug configuration...")
|
||||||
set(GEN_ARGS "${GEN_ARGS_DEBUG}")
|
set(GEN_ARGS "${GEN_ARGS_DEBUG}")
|
||||||
if (GN_EXTRA_ARGS)
|
if (GN_EXTRA_ARGS)
|
||||||
set(GEN_ARGS "${GEN_ARGS} ${GN_EXTRA_ARGS}")
|
set(GEN_ARGS "${GEN_ARGS} ${GN_EXTRA_ARGS}")
|
||||||
endif ()
|
endif ()
|
||||||
execute_process(COMMAND ${GN_EXECUTABLE} gen ${BUILD_DIR}/Debug "--args=${GEN_ARGS}" WORKING_DIRECTORY ${SOURCE_DIR})
|
run_gn("${BUILD_DIR}/Debug")
|
||||||
|
|
||||||
# Release config
|
# Release config
|
||||||
message(STATUS "Running gn for release configuration...")
|
message(STATUS "Running gn for release configuration...")
|
||||||
|
|
@ -34,7 +34,7 @@ function(add_webrtc_target SOURCE_DIR BUILD_DIR)
|
||||||
if (GN_EXTRA_ARGS)
|
if (GN_EXTRA_ARGS)
|
||||||
set(GEN_ARGS "${GEN_ARGS} ${GN_EXTRA_ARGS}")
|
set(GEN_ARGS "${GEN_ARGS} ${GN_EXTRA_ARGS}")
|
||||||
endif ()
|
endif ()
|
||||||
execute_process(COMMAND ${GN_EXECUTABLE} gen ${BUILD_DIR}/Release "--args=${GEN_ARGS}" WORKING_DIRECTORY ${SOURCE_DIR})
|
run_gn("${BUILD_DIR}/Release")
|
||||||
else ()
|
else ()
|
||||||
message(STATUS "Running gn...")
|
message(STATUS "Running gn...")
|
||||||
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
|
|
@ -45,15 +45,25 @@ function(add_webrtc_target SOURCE_DIR BUILD_DIR)
|
||||||
if (GN_EXTRA_ARGS)
|
if (GN_EXTRA_ARGS)
|
||||||
set(GEN_ARGS "${GEN_ARGS} ${GN_EXTRA_ARGS}")
|
set(GEN_ARGS "${GEN_ARGS} ${GN_EXTRA_ARGS}")
|
||||||
endif ()
|
endif ()
|
||||||
execute_process(COMMAND ${GN_EXECUTABLE} gen ${BUILD_DIR} "--args=${GEN_ARGS}" WORKING_DIRECTORY ${SOURCE_DIR})
|
run_gn("${BUILD_DIR}")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (MSVC)
|
macro(add_custom_command_with_path TARGET_NAME)
|
||||||
add_custom_target(webrtc-build ALL ninja -C "${BUILD_DIR}/$<CONFIG>" :webrtc jsoncpp libyuv)
|
add_custom_command(TARGET ${TARGET_NAME} POST_BUILD
|
||||||
add_custom_target(webrtc-clean ${GN_EXECUTABLE} clean "${BUILD_DIR}/$<CONFIG>" WORKING_DIRECTORY ${SOURCE_DIR})
|
COMMAND ${CMAKE_COMMAND} -E env "PATH=$ENV{PATH}" ${ARGN}
|
||||||
|
WORKING_DIRECTORY ${SOURCE_DIR}
|
||||||
|
VERBATIM
|
||||||
|
)
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
add_custom_target(webrtc-build ALL)
|
||||||
|
add_custom_target(webrtc-clean)
|
||||||
|
if (CMAKE_GENERATOR MATCHES "Visual Studio")
|
||||||
|
add_custom_command_with_path(webrtc-build ninja -C "${BUILD_DIR}/$<CONFIG>" :webrtc jsoncpp libyuv)
|
||||||
|
add_custom_command_with_path(webrtc-clean ${GN_EXECUTABLE} clean "${BUILD_DIR}/$<CONFIG>")
|
||||||
else ()
|
else ()
|
||||||
add_custom_target(webrtc-build ALL ninja -C "${BUILD_DIR}" :webrtc jsoncpp libyuv)
|
add_custom_command_with_path(webrtc-build ninja -C "${BUILD_DIR}" :webrtc jsoncpp libyuv)
|
||||||
add_custom_target(webrtc-clean ${GN_EXECUTABLE} clean "${BUILD_DIR}" WORKING_DIRECTORY ${SOURCE_DIR})
|
add_custom_command_with_path(webrtc-clean ${GN_EXECUTABLE} clean "${BUILD_DIR}")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
function(patch_file TARGET_FILE SEARCH_REGEX REPLACE_REGEX)
|
|
||||||
|
|
||||||
file(READ ${TARGET_FILE} filedata)
|
|
||||||
string(REGEX REPLACE ${SEARCH_REGEX} ${REPLACE_REGEX} filedata "${filedata}")
|
|
||||||
file(WRITE ${TARGET_FILE} "${filedata}")
|
|
||||||
|
|
||||||
endfunction()
|
|
||||||
13
cmake/Utils.cmake
Normal file
13
cmake/Utils.cmake
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
function(patch_file TARGET_FILE SEARCH_REGEX REPLACE_REGEX)
|
||||||
|
file(READ ${TARGET_FILE} filedata)
|
||||||
|
string(REGEX REPLACE ${SEARCH_REGEX} ${REPLACE_REGEX} filedata "${filedata}")
|
||||||
|
file(WRITE ${TARGET_FILE} "${filedata}")
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(prependPath DIRECTORY)
|
||||||
|
if (WIN32)
|
||||||
|
set(ENV{PATH} "${DIRECTORY};$ENV{PATH}")
|
||||||
|
else()
|
||||||
|
set(ENV{PATH} "${DIRECTORY}:$ENV{PATH}")
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
@ -56,14 +56,29 @@ if (MSVC)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Install library
|
# Install library
|
||||||
if (MSVC)
|
if (WIN32)
|
||||||
|
set(LIBRARY_FILENAME_DEBUG "webrtcd.lib")
|
||||||
|
set(LIBRARY_FILENAME_RELEASE "webrtc.lib")
|
||||||
|
else()
|
||||||
|
set(LIBRARY_FILENAME_DEBUG "libwebrtcd.a")
|
||||||
|
set(LIBRARY_FILENAME_RELEASE "libwebrtc.a")
|
||||||
|
endif()
|
||||||
|
if (CMAKE_GENERATOR MATCHES "Visual Studio")
|
||||||
install(FILES ${WEBRTC_BUILD_DIR}/Debug/obj/webrtc.lib DESTINATION lib RENAME "webrtcd.lib" CONFIGURATIONS Debug)
|
install(FILES ${WEBRTC_BUILD_DIR}/Debug/obj/webrtc.lib DESTINATION lib RENAME "webrtcd.lib" CONFIGURATIONS Debug)
|
||||||
install(FILES ${WEBRTC_BUILD_DIR}/Release/obj/webrtc.lib DESTINATION lib RENAME "webrtc.lib" CONFIGURATIONS Release)
|
install(FILES ${WEBRTC_BUILD_DIR}/Release/obj/webrtc.lib DESTINATION lib CONFIGURATIONS Release)
|
||||||
else ()
|
else ()
|
||||||
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
install(FILES ${WEBRTC_BUILD_DIR}/obj/libwebrtc.a DESTINATION lib RENAME "libwebrtcd.a")
|
if (WIN32)
|
||||||
|
install(FILES ${WEBRTC_BUILD_DIR}/obj/webrtc.lib DESTINATION lib RENAME "webrtcd.lib")
|
||||||
|
else()
|
||||||
|
install(FILES ${WEBRTC_BUILD_DIR}/obj/libwebrtc.a DESTINATION lib RENAME "libwebrtcd.a")
|
||||||
|
endif()
|
||||||
else ()
|
else ()
|
||||||
install(FILES ${WEBRTC_BUILD_DIR}/obj/libwebrtc.a DESTINATION lib RENAME "libwebrtc.a")
|
if (WIN32)
|
||||||
|
install(FILES ${WEBRTC_BUILD_DIR}/obj/webrtc.lib DESTINATION lib)
|
||||||
|
else()
|
||||||
|
install(FILES ${WEBRTC_BUILD_DIR}/obj/libwebrtc.a DESTINATION lib)
|
||||||
|
endif()
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
|
@ -75,7 +90,7 @@ install(FILES
|
||||||
DESTINATION "lib/cmake/LibWebRTC"
|
DESTINATION "lib/cmake/LibWebRTC"
|
||||||
)
|
)
|
||||||
|
|
||||||
if (MSVC)
|
if (CMAKE_GENERATOR MATCHES "Visual Studio")
|
||||||
install(FILES LibWebRTCTargets-debug.cmake DESTINATION "lib/cmake/LibWebRTC" CONFIGURATIONS Debug)
|
install(FILES LibWebRTCTargets-debug.cmake DESTINATION "lib/cmake/LibWebRTC" CONFIGURATIONS Debug)
|
||||||
install(FILES LibWebRTCTargets-release.cmake DESTINATION "lib/cmake/LibWebRTC" CONFIGURATIONS Release)
|
install(FILES LibWebRTCTargets-release.cmake DESTINATION "lib/cmake/LibWebRTC" CONFIGURATIONS Release)
|
||||||
else ()
|
else ()
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue