ISXMr/CMakeLists.txt

78 lines
2.5 KiB
CMake

cmake_minimum_required(VERSION 3.27)
project(ISXMr VERSION 1.0.0)
set(CMAKE_CXX_STANDARD 14)
#set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Set the project source directory
set(SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src)
# Set the project include directory
include_directories(${SOURCE_DIR})
file(GLOB_RECURSE SCRIPT_FILES "scripts/*")
foreach(FILE ${SCRIPT_FILES})
get_filename_component(FILE_NAME ${FILE} NAME)
string(REGEX REPLACE "[^a-zA-Z0-9]" "_" FILE_IDENTIFIER ${FILE_NAME})
set(HEADER_FILE "${CMAKE_CURRENT_SOURCE_DIR}/scripts/${FILE_NAME}.h")
add_custom_command(
OUTPUT ${HEADER_FILE}
COMMAND xxd -i -n ${FILE_IDENTIFIER} ${FILE} ${HEADER_FILE}
COMMENT "Generating ${HEADER_FILE} from ${FILE_PATH}"
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
DEPENDS ${FILE}
)
list(APPEND GENERATED_HEADERS ${HEADER_FILE})
endforeach()
add_custom_target(GenerateHeaders ALL DEPENDS ${GENERATED_HEADERS})
add_library(ISXMr SHARED ${SOURCE_DIR}/ISXMr.cpp
${SOURCE_DIR}/Commands.cpp
${SOURCE_DIR}/DataTypes.cpp
${SOURCE_DIR}/LGUIMrFrame.cpp
${SOURCE_DIR}/Services.cpp
${SOURCE_DIR}/TopLevelObjects.cpp
${SOURCE_DIR}/Commands.h
${SOURCE_DIR}/DataTypeList.h
${SOURCE_DIR}/DataTypes.h
${SOURCE_DIR}/ISXMr.h
${SOURCE_DIR}/ISXMrServices.h
${SOURCE_DIR}/LGUIMrFrame.h
${SOURCE_DIR}/Services.h
${SOURCE_DIR}/TopLevelObjects.h
src/isxeq2/Character.cpp
src/isxeq2/Character.h
src/isxeq2/Actor.cpp
src/isxeq2/Actor.h
src/isxeq2/LSObject.cpp
src/isxeq2/LSObject.h)
# Set the path to additional libraries
set(LIBS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/libs/)
# Find isxdk library
find_library(ISXDK_LIBRARY ISXDK HINTS ${LIBS_DIR}/isxdk/lib64/vs16)
if(NOT ISXDK_LIBRARY)
message(FATAL_ERROR "isxdk library not found")
endif()
find_library(ISUI_LIBRARY ISUI HINTS ${LIBS_DIR}/isxdk/lib64/vs16)
if(NOT ISUI_LIBRARY)
message(FATAL_ERROR "isxui library not found")
endif()
# Set include directories for isxdk
include_directories(${LIBS_DIR}/isxdk/include)
# Link ISXMr with isxdk library
target_link_libraries(ISXMr PRIVATE ${ISUI_LIBRARY} ${ISXDK_LIBRARY})
# Set the output directory for the shared library
set_target_properties(ISXMr PROPERTIES
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin
)
set_property(TARGET ISXMr PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")