Skip to content

Commit

Permalink
chore: fix windows build with vs builtin generator
Browse files Browse the repository at this point in the history
  • Loading branch information
Julusian committed Jan 27, 2025
1 parent 3394b1f commit 410ff36
Show file tree
Hide file tree
Showing 3 changed files with 157 additions and 53 deletions.
25 changes: 22 additions & 3 deletions src/CMakeModules/Bootstrap_Windows.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,11 @@ casparcg_add_runtime_dependency("${FFMPEG_BIN_PATH}/swscale-8.dll")
casparcg_add_runtime_dependency("${FFMPEG_BIN_PATH}/ffmpeg.exe")
casparcg_add_runtime_dependency("${FFMPEG_BIN_PATH}/ffprobe.exe")

set(EXTERNAL_CMAKE_ARGS "")
if (NOT CMAKE_GENERATOR MATCHES "Visual Studio")
set(EXTERNAL_CMAKE_ARGS "-DCMAKE_BUILD_TYPE:STRING=$<CONFIG>")
endif ()

# TBB
casparcg_add_external_project(tbb)
ExternalProject_Add(tbb
Expand Down Expand Up @@ -182,12 +187,18 @@ ExternalProject_Add(zlib
URL ${CASPARCG_DOWNLOAD_MIRROR}/zlib/zlib-1.3.tar.gz
URL_HASH MD5=60373b133d630f74f4a1f94c1185a53f
DOWNLOAD_DIR ${CASPARCG_DOWNLOAD_CACHE}
CMAKE_ARGS ${EXTERNAL_CMAKE_ARGS}
INSTALL_COMMAND ""
)
ExternalProject_Get_Property(zlib SOURCE_DIR)
ExternalProject_Get_Property(zlib BINARY_DIR)
set(ZLIB_INCLUDE_PATH "${SOURCE_DIR};${BINARY_DIR}")
link_directories(${BINARY_DIR}/Release)

if (CMAKE_GENERATOR MATCHES "Visual Studio")
link_directories(${BINARY_DIR}/Release)
else()
link_directories(${BINARY_DIR})
endif()

# OPENAL
casparcg_add_external_project(openal)
Expand Down Expand Up @@ -224,29 +235,37 @@ set(TEMPLATE_HOST_PATH "${SOURCE_DIR}")
set(LIBERATION_FONTS_BIN_PATH "${PROJECT_SOURCE_DIR}/shell/liberation-fonts")
casparcg_add_runtime_dependency("${LIBERATION_FONTS_BIN_PATH}/LiberationMono-Regular.ttf")

message("TEST ${EXTERNAL_CMAKE_ARGS}")
# CEF
if (ENABLE_HTML)
casparcg_add_external_project(cef)
ExternalProject_Add(cef
URL ${CASPARCG_DOWNLOAD_MIRROR}/cef/cef_binary_131.4.1%2Bg437feba%2Bchromium-131.0.6778.265_windows64_minimal.tar.bz2
URL_HASH SHA1=864d40fb6e26a6ac8cf1003cbfcc16d35c90782e
DOWNLOAD_DIR ${CASPARCG_DOWNLOAD_CACHE}
CMAKE_ARGS -DUSE_SANDBOX=Off -DCEF_RUNTIME_LIBRARY_FLAG=/MD
CMAKE_ARGS -DUSE_SANDBOX=Off -DCEF_RUNTIME_LIBRARY_FLAG=/MD ${EXTERNAL_CMAKE_ARGS}
INSTALL_COMMAND ""
)
ExternalProject_Get_Property(cef SOURCE_DIR)
ExternalProject_Get_Property(cef BINARY_DIR)


set(CEF_INCLUDE_PATH ${SOURCE_DIR})
set(CEF_BIN_PATH ${SOURCE_DIR}/Release)
set(CEF_RESOURCE_PATH ${SOURCE_DIR}/Resources)
set(CEF_BIN_PATH ${SOURCE_DIR}/Release)
link_directories(${SOURCE_DIR}/Release)
link_directories(${BINARY_DIR}/libcef_dll_wrapper)

if (CMAKE_GENERATOR MATCHES "Visual Studio")
set(CEF_LIB
libcef
optimized Release/libcef_dll_wrapper
debug Debug/libcef_dll_wrapper)
else()
set(CEF_LIB
libcef
libcef_dll_wrapper)
endif()

casparcg_add_runtime_dependency_dir("${CEF_RESOURCE_PATH}/locales")
casparcg_add_runtime_dependency("${CEF_RESOURCE_PATH}/chrome_100_percent.pak")
Expand Down
38 changes: 38 additions & 0 deletions src/CMakeSettings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{
"configurations": [
{
"name": "x64-Debug",
"generator": "Ninja",
"configurationType": "Debug",
"inheritEnvironments": [ "msvc_x64_x64" ],
"buildRoot": "${projectDir}\\out\\build\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "",
"ctestCommandArgs": ""
},
{
"name": "x64-Release",
"generator": "Ninja",
"configurationType": "Release",
"buildRoot": "${projectDir}\\out\\build\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "",
"ctestCommandArgs": "",
"inheritEnvironments": [ "msvc_x64_x64" ]
},
{
"name": "x64-RelWithDebInfo",
"generator": "Ninja",
"configurationType": "RelWithDebInfo",
"buildRoot": "${projectDir}\\out\\build\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "",
"ctestCommandArgs": "",
"inheritEnvironments": [ "msvc_x64_x64" ],
"variables": []
}
]
}
147 changes: 97 additions & 50 deletions src/shell/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,8 @@ if (MSVC)
OpenGL32.lib
glew32.lib
openal32.lib
zlibstatic.lib
debug zlibstaticd.lib
optimized zlibstatic.lib
debug sfml-graphics-d.lib
debug sfml-window-d.lib
debug sfml-system-d.lib
Expand Down Expand Up @@ -101,55 +102,101 @@ set(OUTPUT_FOLDER "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}")
add_custom_command(TARGET casparcg_copy_dependencies POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory \"${OUTPUT_FOLDER}\")

if (MSVC)
foreach(FILE_TO_COPY ${CASPARCG_RUNTIME_DEPENDENCIES_DEBUG})
get_filename_component(FOLDER_NAME "${FILE_TO_COPY}" NAME)
add_custom_command(
TARGET casparcg_copy_dependencies
POST_BUILD
COMMAND if $(ConfigurationName) == Debug (
echo \"Copy Debug ${FILE_TO_COPY}\" &&
${CMAKE_COMMAND} -E copy \"${FILE_TO_COPY}\" \"${OUTPUT_FOLDER}/\" &&
${CMAKE_COMMAND} -E copy \"${FILE_TO_COPY}\" \"${CMAKE_CURRENT_BINARY_DIR}/\"
)
)
endforeach(FILE_TO_COPY)
foreach(FILE_TO_COPY ${CASPARCG_RUNTIME_DEPENDENCIES_RELEASE})
get_filename_component(FOLDER_NAME "${FILE_TO_COPY}" NAME)
add_custom_command(
TARGET casparcg_copy_dependencies
POST_BUILD
COMMAND if $(ConfigurationName) NEQ Debug (
echo \"Copy Release ${FILE_TO_COPY}\" &&
${CMAKE_COMMAND} -E copy \"${FILE_TO_COPY}\" \"${OUTPUT_FOLDER}/\" &&
${CMAKE_COMMAND} -E copy \"${FILE_TO_COPY}\" \"${CMAKE_CURRENT_BINARY_DIR}/\"
)
)
endforeach(FILE_TO_COPY)

foreach(FILE_TO_COPY ${CASPARCG_RUNTIME_DEPENDENCIES_DEBUG_DIRS})
get_filename_component(FOLDER_NAME "${FILE_TO_COPY}" NAME)
add_custom_command(
TARGET casparcg_copy_dependencies
POST_BUILD
COMMAND if $(ConfigurationName) == Debug (
echo \"Copy Debug ${FILE_TO_COPY}\" &&
${CMAKE_COMMAND} -E copy_directory \"${FILE_TO_COPY}\" \"${OUTPUT_FOLDER}/${FOLDER_NAME}/\" &&
${CMAKE_COMMAND} -E copy_directory \"${FILE_TO_COPY}\" \"${CMAKE_CURRENT_BINARY_DIR}/${FOLDER_NAME}/\"
)
)
endforeach(FILE_TO_COPY)
foreach(FILE_TO_COPY ${CASPARCG_RUNTIME_DEPENDENCIES_RELEASE_DIRS})
get_filename_component(FOLDER_NAME "${FILE_TO_COPY}" NAME)
add_custom_command(
TARGET casparcg_copy_dependencies
POST_BUILD
COMMAND if $(ConfigurationName) NEQ Debug (
echo \"Copy Release ${FILE_TO_COPY}\" &&
${CMAKE_COMMAND} -E copy_directory \"${FILE_TO_COPY}\" \"${OUTPUT_FOLDER}/${FOLDER_NAME}/\" &&
${CMAKE_COMMAND} -E copy_directory \"${FILE_TO_COPY}\" \"${CMAKE_CURRENT_BINARY_DIR}/${FOLDER_NAME}/\"
)
)
endforeach(FILE_TO_COPY)
if (CMAKE_GENERATOR MATCHES "Visual Studio")
foreach(FILE_TO_COPY ${CASPARCG_RUNTIME_DEPENDENCIES_DEBUG})
get_filename_component(FOLDER_NAME "${FILE_TO_COPY}" NAME)
add_custom_command(
TARGET casparcg_copy_dependencies
POST_BUILD
COMMAND if $(ConfigurationName) == Debug (
echo \"Copy Debug ${FILE_TO_COPY}\" &&
${CMAKE_COMMAND} -E copy \"${FILE_TO_COPY}\" \"${OUTPUT_FOLDER}/\" &&
${CMAKE_COMMAND} -E copy \"${FILE_TO_COPY}\" \"${CMAKE_CURRENT_BINARY_DIR}/\"
)
)
endforeach(FILE_TO_COPY)
foreach(FILE_TO_COPY ${CASPARCG_RUNTIME_DEPENDENCIES_RELEASE})
get_filename_component(FOLDER_NAME "${FILE_TO_COPY}" NAME)
add_custom_command(
TARGET casparcg_copy_dependencies
POST_BUILD
COMMAND if $(ConfigurationName) NEQ Debug (
echo \"Copy Release ${FILE_TO_COPY}\" &&
${CMAKE_COMMAND} -E copy \"${FILE_TO_COPY}\" \"${OUTPUT_FOLDER}/\" &&
${CMAKE_COMMAND} -E copy \"${FILE_TO_COPY}\" \"${CMAKE_CURRENT_BINARY_DIR}/\"
)
)
endforeach(FILE_TO_COPY)

foreach(FILE_TO_COPY ${CASPARCG_RUNTIME_DEPENDENCIES_DEBUG_DIRS})
get_filename_component(FOLDER_NAME "${FILE_TO_COPY}" NAME)
add_custom_command(
TARGET casparcg_copy_dependencies
POST_BUILD
COMMAND if $(ConfigurationName) == Debug (
echo \"Copy Debug ${FILE_TO_COPY}\" &&
${CMAKE_COMMAND} -E copy_directory \"${FILE_TO_COPY}\" \"${OUTPUT_FOLDER}/${FOLDER_NAME}/\" &&
${CMAKE_COMMAND} -E copy_directory \"${FILE_TO_COPY}\" \"${CMAKE_CURRENT_BINARY_DIR}/${FOLDER_NAME}/\"
)
)
endforeach(FILE_TO_COPY)
foreach(FILE_TO_COPY ${CASPARCG_RUNTIME_DEPENDENCIES_RELEASE_DIRS})
get_filename_component(FOLDER_NAME "${FILE_TO_COPY}" NAME)
add_custom_command(
TARGET casparcg_copy_dependencies
POST_BUILD
COMMAND if $(ConfigurationName) NEQ Debug (
echo \"Copy Release ${FILE_TO_COPY}\" &&
${CMAKE_COMMAND} -E copy_directory \"${FILE_TO_COPY}\" \"${OUTPUT_FOLDER}/${FOLDER_NAME}/\" &&
${CMAKE_COMMAND} -E copy_directory \"${FILE_TO_COPY}\" \"${CMAKE_CURRENT_BINARY_DIR}/${FOLDER_NAME}/\"
)
)
endforeach(FILE_TO_COPY)
elseif(${CMAKE_BUILD_TYPE} MATCHES "Debug")
foreach(FILE_TO_COPY ${CASPARCG_RUNTIME_DEPENDENCIES_DEBUG})
get_filename_component(FOLDER_NAME "${FILE_TO_COPY}" NAME)
add_custom_command(
TARGET casparcg_copy_dependencies
POST_BUILD
COMMAND echo \"Copy Debug ${FILE_TO_COPY}\" &&
${CMAKE_COMMAND} -E copy \"${FILE_TO_COPY}\" \"${OUTPUT_FOLDER}/\" &&
${CMAKE_COMMAND} -E copy \"${FILE_TO_COPY}\" \"${CMAKE_CURRENT_BINARY_DIR}/\"
)
endforeach(FILE_TO_COPY)

foreach(FILE_TO_COPY ${CASPARCG_RUNTIME_DEPENDENCIES_DEBUG_DIRS})
get_filename_component(FOLDER_NAME "${FILE_TO_COPY}" NAME)
add_custom_command(
TARGET casparcg_copy_dependencies
POST_BUILD
COMMAND echo \"Copy Debug ${FILE_TO_COPY}\" &&
${CMAKE_COMMAND} -E copy_directory \"${FILE_TO_COPY}\" \"${OUTPUT_FOLDER}/${FOLDER_NAME}/\" &&
${CMAKE_COMMAND} -E copy_directory \"${FILE_TO_COPY}\" \"${CMAKE_CURRENT_BINARY_DIR}/${FOLDER_NAME}/\"
)
endforeach(FILE_TO_COPY)
else ()
foreach(FILE_TO_COPY ${CASPARCG_RUNTIME_DEPENDENCIES_RELEASE})
get_filename_component(FOLDER_NAME "${FILE_TO_COPY}" NAME)
add_custom_command(
TARGET casparcg_copy_dependencies
POST_BUILD
COMMAND echo \"Copy Release ${FILE_TO_COPY}\" &&
${CMAKE_COMMAND} -E copy \"${FILE_TO_COPY}\" \"${OUTPUT_FOLDER}/\" &&
${CMAKE_COMMAND} -E copy \"${FILE_TO_COPY}\" \"${CMAKE_CURRENT_BINARY_DIR}/\"
)
endforeach(FILE_TO_COPY)

foreach(FILE_TO_COPY ${CASPARCG_RUNTIME_DEPENDENCIES_RELEASE_DIRS})
get_filename_component(FOLDER_NAME "${FILE_TO_COPY}" NAME)
add_custom_command(
TARGET casparcg_copy_dependencies
POST_BUILD
COMMAND echo \"Copy Release ${FILE_TO_COPY}\" &&
${CMAKE_COMMAND} -E copy_directory \"${FILE_TO_COPY}\" \"${OUTPUT_FOLDER}/${FOLDER_NAME}/\" &&
${CMAKE_COMMAND} -E copy_directory \"${FILE_TO_COPY}\" \"${CMAKE_CURRENT_BINARY_DIR}/${FOLDER_NAME}/\"
)
endforeach(FILE_TO_COPY)
endif ()
else ()
ADD_CUSTOM_COMMAND (TARGET casparcg POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/shell/casparcg ${CMAKE_BINARY_DIR}/staging/bin/casparcg)
ADD_CUSTOM_COMMAND (TARGET casparcg POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/shell/casparcg.config ${CMAKE_BINARY_DIR}/staging/casparcg.config)
Expand Down

0 comments on commit 410ff36

Please sign in to comment.