Skip to content

Commit

Permalink
Merge pull request #145 from RandomPrototypes/support_find_package
Browse files Browse the repository at this point in the history
generate screen_capture_liteConfig.cmake so that we can use find_package()
  • Loading branch information
smasherprog authored Dec 8, 2022
2 parents 9d8bf3e + 32211a2 commit a76e649
Show file tree
Hide file tree
Showing 8 changed files with 99 additions and 41 deletions.
44 changes: 34 additions & 10 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
cmake_minimum_required(VERSION 3.16)
project(screen_capture_lite_build)
project(screen_capture_lite_build VERSION 17.1)

set(CMAKE_CXX_STANDARD 17)
#set(CMAKE_DEBUG_POSTFIX "d")
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
option(BUILD_EXAMPLE "Build example" ON)
set(BUILD_SHARED_LIBS OFF CACHE INTERNAL "Build shared libraries")
option(BUILD_CSHARP "Build C#" ON)
option(BUILD_SHARED_LIBS "Build shared libraries" ON)
set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})

Expand All @@ -21,14 +23,34 @@ else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic")
endif()

if(${BUILD_SHARED_LIBS})
set(TARGET_SUFFIX shared)
else()
set(TARGET_SUFFIX static)
endif()

set(TARGET_NAME screen_capture_lite_${TARGET_SUFFIX})

add_subdirectory(src_cpp)
add_subdirectory(src_csharp)
if(${BUILD_CSHARP} AND ${BUILD_SHARED_LIBS})
add_subdirectory(src_csharp)
endif()

install (TARGETS screen_capture_lite_static screen_capture_lite_shared
RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
install (TARGETS ${TARGET_NAME}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)

configure_file(modules/${TARGET_NAME}Config.cmake.in ${TARGET_NAME}Config.cmake @ONLY)

#export(TARGETS ${TARGET_NAME} FILE ${TARGET_NAME}-config.cmake)
#install(EXPORT ${TARGET_NAME}-config FILE ${TARGET_NAME}-config.cmake DESTINATION lib/cmake/screen_capture_lite)

install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_NAME}Config.cmake
DESTINATION lib${LIB_SUFFIX}/cmake/screen_capture_lite)


install (FILES
include/ScreenCapture.h
Expand All @@ -45,11 +67,13 @@ if (NOT TARGET uninstall)
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
endif()

enable_testing()
enable_testing()

if (${BUILD_EXAMPLE})
add_subdirectory(Example_OpenGL)
add_subdirectory(Example_CPP)
add_subdirectory(Example_CSharp)
add_subdirectory(Example_Unity)
if(${BUILD_CSHARP} AND ${BUILD_SHARED_LIBS})
add_subdirectory(Example_CSharp)
add_subdirectory(Example_Unity)
endif()
endif()
26 changes: 12 additions & 14 deletions Example_CPP/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
project(screen_capture_example_cpp)

if(WIN32)
set(${PROJECT_NAME}_PLATFORM_LIBS Dwmapi)
add_definitions(-DNOMINMAX)
elseif(APPLE)
endif()

if(NOT ${BUILD_SHARED_LIBS})
if(WIN32)
set(${PROJECT_NAME}_PLATFORM_LIBS Dwmapi)
elseif(APPLE)
find_package(Threads REQUIRED)
find_library(corefoundation_lib CoreFoundation REQUIRED)
find_library(cocoa_lib Cocoa REQUIRED)
Expand All @@ -21,7 +25,7 @@ elseif(APPLE)
${coregraphics_lib}
${corevideo_lib}
)
else()
else()
find_package(X11 REQUIRED)
if(!X11_XTest_FOUND)
message(FATAL_ERROR "X11 extensions are required, but not found!")
Expand All @@ -37,26 +41,20 @@ else()
${X11_Xinerama_LIB}
${CMAKE_THREAD_LIBS_INIT}
)
endif()
endif()

include_directories(
../include
)

add_executable(${PROJECT_NAME}_static
add_executable(${PROJECT_NAME}_${TARGET_SUFFIX}
lodepng.cpp
Screen_Capture_Example.cpp
)
target_link_libraries(${PROJECT_NAME}_static screen_capture_lite_static ${${PROJECT_NAME}_PLATFORM_LIBS})

add_executable(${PROJECT_NAME}_shared
lodepng.cpp
Screen_Capture_Example.cpp
)

target_link_libraries(${PROJECT_NAME}_shared screen_capture_lite_shared ${${PROJECT_NAME}_PLATFORM_LIBS})
target_link_libraries(${PROJECT_NAME}_${TARGET_SUFFIX} screen_capture_lite_${TARGET_SUFFIX} ${${PROJECT_NAME}_PLATFORM_LIBS})

install (TARGETS ${PROJECT_NAME}_static ${PROJECT_NAME}_shared screen_capture_lite_shared
install (TARGETS ${PROJECT_NAME}_${TARGET_SUFFIX} screen_capture_lite_${TARGET_SUFFIX}
RUNTIME DESTINATION Examples
)


8 changes: 4 additions & 4 deletions Example_CSharp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ else()
ENDIF()
message(STATUS "Found dotnet executable CSHARP bindings will be generated!")
add_custom_command(OUTPUT ${OUTPUT}
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:screen_capture_lite_shared> ${CMAKE_CURRENT_LIST_DIR}
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:screen_capture_lite_shared> ${CMAKE_BINARY_DIR}/Example_CSharp
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:screen_capture_lite_${TARGET_SUFFIX}> ${CMAKE_CURRENT_LIST_DIR}
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:screen_capture_lite_${TARGET_SUFFIX}> ${CMAKE_BINARY_DIR}/Example_CSharp
COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_CURRENT_LIST_DIR}/${CSPROJ}
${CMAKE_BINARY_DIR}/Example_CSharp
Expand All @@ -39,11 +39,11 @@ install (FILES ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.pdb
OPTIONAL
)

install (TARGETS screen_capture_lite_shared
install (TARGETS screen_capture_lite_${TARGET_SUFFIX}
RUNTIME DESTINATION Examples
)

endif()




20 changes: 12 additions & 8 deletions Example_OpenGL/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
project(screen_capture_example_opengl_cpp)

if(WIN32)
set(${PROJECT_NAME}_PLATFORM_LIBS Dwmapi)
add_definitions(-DNOMINMAX)
elseif(APPLE)
endif()

if(NOT ${BUILD_SHARED_LIBS})
if(WIN32)
set(${PROJECT_NAME}_PLATFORM_LIBS Dwmapi)
elseif(APPLE)
find_package(Threads REQUIRED)
find_library(corefoundation_lib CoreFoundation REQUIRED)
find_library(cocoa_lib Cocoa REQUIRED)
Expand All @@ -21,7 +25,7 @@ elseif(APPLE)
${coregraphics_lib}
${corevideo_lib}
)
else()
else()
find_package(X11 REQUIRED)
if(!X11_XTest_FOUND)
message(FATAL_ERROR "X11 extensions are required, but not found!")
Expand All @@ -37,6 +41,7 @@ else()
${X11_Xinerama_LIB}
${CMAKE_THREAD_LIBS_INIT}
)
endif()
endif()

include_directories(
Expand All @@ -50,8 +55,7 @@ set(GLAD_GL glfw/deps/glad/gl.h

option(GLFW_BUILD_EXAMPLES OFF)
option(GLFW_BUILD_TESTS OFF)
option(GLFW_BUILD_DOCS OFF)
option(BUILD_SHARED_LIBS OFF)
option(GLFW_BUILD_DOCS OFF)
option(USE_MSVC_RUNTIME_LIBRARY_DLL OFF)

if (MSVC OR CMAKE_C_SIMULATE_ID STREQUAL "MSVC")
Expand All @@ -60,13 +64,13 @@ endif()

add_subdirectory(glfw)

add_executable(${PROJECT_NAME}_static
add_executable(${PROJECT_NAME}_${TARGET_SUFFIX}
Screen_Capture_Example_OpenGL.cpp
${GLAD_GL}
)

target_link_libraries(${PROJECT_NAME}_static screen_capture_lite_static ${${PROJECT_NAME}_PLATFORM_LIBS} glfw)
target_link_libraries(${PROJECT_NAME}_${TARGET_SUFFIX} screen_capture_lite_${TARGET_SUFFIX} ${${PROJECT_NAME}_PLATFORM_LIBS} glfw)

install (TARGETS ${PROJECT_NAME}_static screen_capture_lite_static
install (TARGETS ${PROJECT_NAME}_${TARGET_SUFFIX} screen_capture_lite_${TARGET_SUFFIX}
RUNTIME DESTINATION Examples
)
15 changes: 15 additions & 0 deletions modules/screen_capture_lite_sharedConfig.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
set(screen_capture_lite_shared_FOUND 1)

set(screen_capture_lite_shared_VERSION_COUNT 2)
set(screen_capture_lite_shared_VERSION_MAJOR "@CMAKE_PROJECT_VERSION_MAJOR@")
set(screen_capture_lite_shared_VERSION_MINOR "@CMAKE_PROJECT_VERSION_MINOR@")

set(screen_capture_lite_shared_INCLUDE_DIR "@CMAKE_INSTALL_PREFIX@/include")
set(screen_capture_lite_shared_INCLUDE_DIRS ${screen_capture_lite_shared_INCLUDE_DIR})

set(screen_capture_lite_shared_LIBRARY_DIR "@CMAKE_INSTALL_PREFIX@/lib@LIB_SUFFIX@")

find_library(screen_capture_lite_shared_LIBRARY screen_capture_lite_shared HINTS ${screen_capture_lite_shared_LIBRARY_DIR})

set(screen_capture_lite_shared_LIBS ${screen_capture_lite_shared_LIBRARY})
set(screen_capture_lite_shared_LIBRARIES ${screen_capture_lite_shared_LIBS})
15 changes: 15 additions & 0 deletions modules/screen_capture_lite_staticConfig.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
set(screen_capture_lite_static_FOUND 1)

set(screen_capture_lite_static_VERSION_COUNT 2)
set(screen_capture_lite_static_VERSION_MAJOR "@CMAKE_PROJECT_VERSION_MAJOR@")
set(screen_capture_lite_static_VERSION_MINOR "@CMAKE_PROJECT_VERSION_MINOR@")

set(screen_capture_lite_static_INCLUDE_DIR "@CMAKE_INSTALL_PREFIX@/include")
set(screen_capture_lite_static_INCLUDE_DIRS ${screen_capture_lite_static_INCLUDE_DIR})

set(screen_capture_lite_static_LIBRARY_DIR "@CMAKE_INSTALL_PREFIX@/lib@LIB_SUFFIX@")

find_library(screen_capture_lite_static_LIBRARY screen_capture_lite_static HINTS ${screen_capture_lite_static_LIBRARY_DIR})

set(screen_capture_lite_static_LIBS ${screen_capture_lite_static_LIBRARY})
set(screen_capture_lite_static_LIBRARIES ${screen_capture_lite_static_LIBS})
9 changes: 5 additions & 4 deletions src_cpp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,10 @@ set(libsrc
${SCREEN_CAPTURE_PLATFORM_SRC}
)

message("Building STATIC Library")
add_library(${PROJECT_NAME}_static STATIC ${libsrc})

if(NOT ${BUILD_SHARED_LIBS})
message("Building STATIC Library")
add_library(${PROJECT_NAME}_static STATIC ${libsrc})
else()
message("Building SHARED Library")

add_library(${PROJECT_NAME}_shared SHARED ${libsrc} ../include/ScreenCapture_C_API.h)
Expand Down Expand Up @@ -127,4 +128,4 @@ add_library(${PROJECT_NAME}_static STATIC ${libsrc})
${CMAKE_THREAD_LIBS_INIT}
)
endif()

endif()
3 changes: 2 additions & 1 deletion src_csharp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ else()
)

add_custom_target(${PROJECT_NAME} ALL DEPENDS ${OUTPUT})
add_dependencies(${PROJECT_NAME} screen_capture_lite_shared)
add_dependencies(${PROJECT_NAME} screen_capture_lite_${TARGET_SUFFIX})

install (FILES ${CMAKE_BINARY_DIR}/${OUTPUT}
DESTINATION bin
Expand All @@ -46,4 +46,5 @@ install (FILES ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.pdb
DESTINATION bin
OPTIONAL
)

endif()

0 comments on commit a76e649

Please sign in to comment.