91 lines
2.9 KiB
CMake
91 lines
2.9 KiB
CMake
cmake_minimum_required(VERSION 3.27)
|
|
project(skeingl)
|
|
|
|
# Define platform-specific paths and libraries
|
|
if(WIN32)
|
|
# GLFW
|
|
set(GLFW_PATH "C:/libs/glfw-3.3.8.bin.WIN64")
|
|
include_directories(${GLFW_PATH}/include)
|
|
link_directories(${GLFW_PATH}/lib-vc2022)
|
|
|
|
# GLEW
|
|
set(GLEW_PATH "C:/libs/glew-2.2.0")
|
|
include_directories(${GLEW_PATH}/include)
|
|
link_directories(${GLEW_PATH}/lib/Release/x64)
|
|
|
|
# OpenGL
|
|
find_package(OpenGL REQUIRED)
|
|
elseif(UNIX)
|
|
find_package(PkgConfig REQUIRED)
|
|
pkg_search_module(GLFW REQUIRED glfw3)
|
|
find_package(GLEW REQUIRED)
|
|
find_package(OpenGL REQUIRED)
|
|
elseif(APPLE)
|
|
message(FATAL_ERROR "macOS is not supported yet.")
|
|
endif()
|
|
|
|
add_subdirectory(lib/skein)
|
|
|
|
add_executable(${PROJECT_NAME}
|
|
src/main.cpp
|
|
src/io.cpp
|
|
src/icosphere.cpp
|
|
src/gfx.cpp
|
|
src/orbitvisualizer.cpp
|
|
src/particlevisualizer.cpp
|
|
src/widget.cpp
|
|
)
|
|
|
|
if(WIN32)
|
|
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
|
"${GLEW_PATH}/bin/Release/x64/glew32.dll"
|
|
$<TARGET_FILE_DIR:${PROJECT_NAME}>
|
|
)
|
|
|
|
target_link_libraries(${PROJECT_NAME} glfw3)
|
|
target_link_libraries(${PROJECT_NAME} glew32)
|
|
target_include_directories(${PROJECT_NAME} PRIVATE ${GLEW_INCLUDE_DIRS})
|
|
target_link_libraries(${PROJECT_NAME} OpenGL::GL)
|
|
target_link_libraries(${PROJECT_NAME} skein)
|
|
elseif(UNIX)
|
|
include_directories(${GLFW_INCLUDE_DIRS})
|
|
target_link_libraries(${PROJECT_NAME} ${GLFW_LIBRARIES})
|
|
target_link_libraries(${PROJECT_NAME} GLEW::GLEW)
|
|
target_link_libraries(${PROJECT_NAME} OpenGL::GL)
|
|
target_link_libraries(${PROJECT_NAME} skein)
|
|
endif()
|
|
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/vert.glsl
|
|
${CMAKE_CURRENT_BINARY_DIR}/vert.glsl COPYONLY)
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/frag_lit.glsl
|
|
${CMAKE_CURRENT_BINARY_DIR}/frag_lit.glsl COPYONLY)
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/frag_unlit.glsl
|
|
${CMAKE_CURRENT_BINARY_DIR}/frag_unlit.glsl COPYONLY)
|
|
|
|
# Append Git version to built executable after it has been built
|
|
find_package(Git)
|
|
if (GIT_FOUND)
|
|
if (WIN32)
|
|
set(TARGET_EXTENSION ".exe")
|
|
elseif(UNIX)
|
|
set(TARGET_EXTENSION "")
|
|
endif()
|
|
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND}
|
|
-DTARGET_DIR=$<TARGET_FILE_DIR:${PROJECT_NAME}>
|
|
-DPROJECT_NAME=${PROJECT_NAME}
|
|
-DTARGET_EXTENSION=${TARGET_EXTENSION}
|
|
-P ${CMAKE_CURRENT_SOURCE_DIR}/add_git_version_to_executable.cmake
|
|
)
|
|
else()
|
|
message("Git not found - will not rename the exectuable.")
|
|
endif()
|
|
|
|
#target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/lib/skein/include)
|
|
|
|
# Include header-only libraries
|
|
# TODO: we really only want to include skein as a library, without concerning ourselves with skein's libraries
|
|
target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/lib/glm)
|
|
|