Skip to content

Commit

Permalink
Fix CMakeLists.txt for Windows
Browse files Browse the repository at this point in the history
Use a correct lib finding for windows
  • Loading branch information
DaLLuZZ committed Mar 2, 2025
1 parent 86db346 commit 89c83e5
Showing 1 changed file with 43 additions and 12 deletions.
55 changes: 43 additions & 12 deletions UsbScroll/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@

cmake_minimum_required(VERSION 3.10.2)

set(CMAKE_GENERATOR_PLATFORM x64)

project(UsbScroll VERSION 0.29.3)

#
MACRO (ADD_SOURCE_FILES_FOR_MODULE MODULE_NAME)
LIST (APPEND SOURCE_FILES_INCLUDE_LIST ${MODULE_NAME})
list (APPEND SOURCE_FILES_INCLUDE_LIST ${MODULE_NAME})
ENDMACRO (ADD_SOURCE_FILES_FOR_MODULE)

#
Expand All @@ -17,8 +19,8 @@ ENDMACRO (ADD_SOURCE_FILES_FOR_MODULES)

#
MACRO (CREATE_MODULE_FILES_LISTS)
FILE( GLOB SOURCE_FILES_H ${CMAKE_CURRENT_SOURCE_DIR}/source/*.h ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h)
FILE( GLOB SOURCE_FILES_CPP ${CMAKE_CURRENT_SOURCE_DIR}/source/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/include/*.cpp)
file( GLOB SOURCE_FILES_H ${CMAKE_CURRENT_SOURCE_DIR}/source/*.h ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h)
file( GLOB SOURCE_FILES_CPP ${CMAKE_CURRENT_SOURCE_DIR}/source/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/include/*.cpp)
ENDMACRO (CREATE_MODULE_FILES_LISTS)

include(CheckCXXCompilerFlag)
Expand All @@ -29,28 +31,57 @@ else()
check_cxx_compiler_flag("/std:c++17" HAS_STDCXX_1z_MSVC)
if (HAS_STDCXX_1z_MSVC)
ADD_COMPILE_OPTIONS("/std:c++17")
ELSE()
MESSAGE("The compiler doesn't support the 1z C++ standard")
else()
MESSAGE(FATAL_ERROR "The compiler doesn't support the 1z C++ standard")
exit()
ENDIF()
endif()
endif()

if(NOT CMAKE_BUILD_TYPE)
message(NOTICE "Build type was not defined. Set to Release.")
message(STATUS "Build type was not defined. Set to Release.")
set(CMAKE_BUILD_TYPE Release CACHE STRING "Default build type: Release" FORCE)
else()
message(STATUS "Build type defined as ${CMAKE_BUILD_TYPE}")
endif()

CREATE_MODULE_FILES_LISTS()

find_package(wxWidgets REQUIRED COMPONENTS core base)
find_package(OpenMP REQUIRED)
find_library(ESEUsbCam_LIBRARY ESEUsbCam HINTS ../Libraries/ESEUsbCamLib/lib/)

include(${wxWidgets_USE_FILE})
set(wxWidgetsLibs "")
FOREACH(wxLib wxmsw32u_core wxbase32u)
find_library(wxLibFound ${wxLib} HINTS ../Libraries/wxWidgets/lib/vc14x_x64_dll NO_CACHE)
list (APPEND wxWidgetsLibs optimized ${wxLibFound})
set(wxLibFound "wxLibFound-NOTFOUND")
ENDFOREACH()

find_library(ESEUsbCam_LIBRARY libESEUsbCam.so HINTS /usr/lib/)
set(wxWidgetsLibsDebug "")
FOREACH(wxLib wxmsw32ud_core wxbase32ud)
find_library(wxLibFound ${wxLib} HINTS ../Libraries/wxWidgets/lib/vc14x_x64_dll NO_CACHE)
list (APPEND wxWidgetsLibsDebug debug ${wxLibFound})
set(wxLibFound "wxLibFound-NOTFOUND")
ENDFOREACH()

list (APPEND dll_list_optim ../Libraries/wxWidgets/lib/vc14x_x64_dll/wxbase32u_vc14x_x64.dll ../Libraries/wxWidgets/lib/vc14x_x64_dll/wxmsw32u_core_vc14x_x64.dll)
list (APPEND dll_list_debug ../Libraries/wxWidgets/lib/vc14x_x64_dll/wxbase32ud_vc14x_x64.dll ../Libraries/wxWidgets/lib/vc14x_x64_dll/wxmsw32ud_core_vc14x_x64.dll)
list (APPEND dll_general ../Libraries/ESEUsbCamLib/lib/libusb-1.0.dll ../Libraries/ESEUsbCamLib/lib/ESEUsbCam.dll)

find_package(OpenMP REQUIRED)

set(UsbScroll "UsbScroll")
add_executable (${UsbScroll} ${SOURCE_FILES_H} ${SOURCE_FILES_CPP})
target_link_libraries(${UsbScroll} ${ESEUsbCam_LIBRARY} ${wxWidgets_LIBRARIES} OpenMP::OpenMP_CXX)
target_compile_definitions(${UsbScroll} PUBLIC wxUSE_UNICODE=1 _UNICODE UNICODE WXUSINGDLL)
target_link_libraries(${UsbScroll} ${ESEUsbCam_LIBRARY} OpenMP::OpenMP_CXX ${wxWidgetsLibs} ${wxWidgetsLibsDebug})
target_include_directories(${UsbScroll} PRIVATE ../Libraries/ESEUsbCamLib/include ../Libraries/wxWidgets/include ../Libraries/wxWidgets/lib/vc14x_x64_dll/mswu)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:WINDOWS")
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ${UsbScroll})

set(dll_command "")
FOREACH(dbg opt IN ZIP_LISTS dll_list_debug dll_list_optim)
list (APPEND dll_command COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/$<IF:$<CONFIG:Debug>,${dbg},${opt}> $<TARGET_FILE_DIR:${UsbScroll}>)
ENDFOREACH()
FOREACH(gnrl IN LISTS dll_general)
list (APPEND dll_command COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/${gnrl} $<TARGET_FILE_DIR:${UsbScroll}>)
ENDFOREACH()

add_custom_command(TARGET ${UsbScroll} POST_BUILD ${dll_command})

0 comments on commit 89c83e5

Please sign in to comment.