cmake_minimum_required(VERSION 3.10 FATAL_ERROR) if(WIN32) set(CEF_VERSION "cef_binary_102.0.10+gf249b2e+chromium-102.0.5005.115_windows64") endif(WIN32) if(UNIX) set(CEF_VERSION "cef_binary_102.0.10+gf249b2e+chromium-102.0.5005.115_linux64") endif(UNIX) set(CEF_PATH "${CMAKE_CURRENT_BINARY_DIR}/cef") set(CEF_URL "https://cef-builds.spotifycdn.com/${CEF_VERSION}.tar.bz2") set(CEF_DOWNLOAD_PATH "${CEF_PATH}.tar.bz2") if (NOT EXISTS "${CEF_DOWNLOAD_PATH}") file(DOWNLOAD "${CEF_URL}" "${CEF_DOWNLOAD_PATH}") file(ARCHIVE_EXTRACT INPUT "${CEF_DOWNLOAD_PATH}") file(RENAME "${CMAKE_CURRENT_BINARY_DIR}/${CEF_VERSION}" "${CEF_PATH}") endif() project( cef_child_process VERSION 1.0 LANGUAGES CXX) SET(CMAKE_SKIP_BUILD_RPATH FALSE) SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) SET(CMAKE_INSTALL_RPATH "\${ORIGIN}") add_executable(${PROJECT_NAME} src/cef_child_process.cpp) set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 14 CMAKE_CXX_STANDARD_REQUIRED TRUE) if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") target_compile_definitions(${PROJECT_NAME} PRIVATE _CRT_SECURE_NO_WARNINGS UNICODE NOMINMAX WIN32_LEAN_AND_MEAN VC_EXTRALEAN) target_compile_options(${PROJECT_NAME} PRIVATE -W4 -WX -wd4201 -fp:fast -fp:except- -EHsc -Zi) target_compile_definitions(${PROJECT_NAME} PRIVATE $<$:_HAS_ITERATOR_DEBUGGING=0>) endif() if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") target_compile_options(${PROJECT_NAME} PRIVATE -Weverything -Werror -Wfatal-errors -Wno-gnu-anonymous-struct -Wno-nested-anon-types -Wno-missing-braces -Wno-c++98-compat-pedantic -Wno-padded -Wno-missing-braces -Wno-covered-switch-default -Wno-gnu-anonymous-struct -Wno-nested-anon-types -Wno-weak-vtables -Wno-switch-enum -Wno-c++2a-compat -Wno-extra-semi-stmt -ffast-math -fno-strict-aliasing -funsigned-char -ftrapv) endif() target_include_directories( ${PROJECT_NAME} SYSTEM PUBLIC ${CEF_PATH}/) target_link_directories(${PROJECT_NAME} PUBLIC "${CEF_PATH}/${CMAKE_BUILD_TYPE}") target_link_libraries(${PROJECT_NAME} libcef_dll_wrapper ${CEF_STANDARD_LIBS}) if(WIN32) target_link_libraries(${PROJECT_NAME} ${CEF_CHILD_PROCESS_RS_TARGET_DIR}/cef_child_process_rs.lib libcef ws2_32 Bcrypt Userenv Shell32) target_link_options(${PROJECT_NAME} PRIVATE "/SUBSYSTEM:WINDOWS") endif() if(UNIX) target_link_libraries(${PROJECT_NAME} ${CEF_CHILD_PROCESS_RS_TARGET_DIR}/libcef_child_process_rs.a cef pthread rt dl) endif() add_subdirectory(${CEF_PATH} ${CMAKE_CURRENT_BINARY_DIR}/../build_cef) add_dependencies(${PROJECT_NAME} libcef_dll_wrapper) install(TARGETS ${PROJECT_NAME})