78 lines
2.5 KiB
CMake
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>")
|