Files
vb01/CMakeLists.txt
T
2021-10-19 19:06:42 +03:00

98 lines
3.3 KiB
CMake
Executable File

cmake_minimum_required(VERSION 3.2)
project(vb01)
set(CMAKE_BUILD_TYPE Debug)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -pedantic")
set(BUILD_SHARED_LIBS OFF)
set(BUILD_TESTS ON)
set(BUILD_SAMPLES ON)
set(LIB_NAME vb01)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
cmake_policy(SET CMP0015 NEW)
set(GUI text.cpp)
set(UTILS util.cpp)
set(MATH quaternion.cpp vector.cpp matrix.cpp ray.cpp)
set(RENDER particleEmitter.cpp camera.cpp light.cpp material.cpp mesh.cpp model.cpp node.cpp quad.cpp box.cpp root.cpp shader.cpp texture.cpp)
set(MODEL modelReader.cpp assimpModelReader.cpp vbModelReader.cpp)
set(ANIM animationController.cpp animationChannel.cpp animation.cpp animatable.h keyframeChannel.cpp driver.cpp)
set(ARMATURE skeleton.cpp bone.cpp ikSolver.cpp)
set(LIB_SRC ${RENDER} ${MATH} ${MODEL} ${UTILS} ${GUI} ${ARMATURE} ${ASSET_MANAGER} ${ANIM})
include_directories(external/glm)
include_directories(external/glm/glm)
include_directories(external/glad)
include_directories(external/stb)
add_library(${LIB_NAME} SHARED external/glad/glad.c ${LIB_SRC})
set(GLFW_DIR external/glfw)
set(FREETYPE_DIR external/freetype)
set(ASSIMP_DIR external/assimp)
set(CPPUNIT_DIR external/CppUnit)
if(UNIX)
message("Building for UNIX")
elseif(WIN32)
message("Building for Windows")
endif()
add_subdirectory(${GLFW_DIR})
set(GLFW_LIB_DIR build/${GLFW_DIR}/src)
target_include_directories(${LIB_NAME} PUBLIC ${GLFW_DIR}/include/GLFW)
target_link_directories(${LIB_NAME} PUBLIC ${GLFW_LIB_DIR})
add_subdirectory(${ASSIMP_DIR})
set(ASSIMP_LIB_DIR build/${ASSIMP_DIR}/lib)
target_include_directories(${LIB_NAME} PUBLIC ${ASSIMP_DIR}/include/assimp)
target_link_directories(${LIB_NAME} PUBLIC ${ASSIMP_LIB_DIR})
set(FREETYPE_LIB_DIR build/${FREETYPE_DIR})
add_subdirectory(${FREETYPE_DIR})
target_include_directories(${LIB_NAME} PUBLIC ${FREETYPE_DIR}/include)
target_link_directories(${LIB_NAME} PUBLIC ${FREETYPE_LIB_DIR})
set(DEPS glfw assimp freetype ${CMAKE_DL_LIBS})
target_link_libraries(${LIB_NAME} ${DEPS})
if(BUILD_TESTS)
if(UNIX)
include_directories(/usr/include/cppunit)
link_directories(/usr/lib)
elseif(WIN32)
include_directories(C:/Program\ Files\ \(x86\)/cppunit/include)
link_directories(C:/Program\ Files\ \(x86\)/cppunit/lib)
endif()
set(RENDER_TEST nodeTest.cpp cameraTest.cpp shaderTest.cpp particleEmitterTest.cpp)
set(ARMATURE_TEST boneTest.cpp ikSolverTest.cpp)
set(MODEL_TEST vbModelReaderTest.cpp)
set(ANIMATION_TEST animationChannelTest.cpp)
set(TEST_SRC main.cpp ${LIB_SRC} ${RENDER_TEST} ${ARMATURE_TEST} ${MODEL_TEST} ${ANIMATION_TEST})
add_executable(vb01Tests ${TEST_SRC})
target_link_libraries(vb01Tests ${LIB_NAME} ${DEPS} cppunit)
endif()
if(BUILD_SAMPLES)
add_executable(textSample textSample.cpp)
target_link_libraries(textSample ${LIB_NAME})
add_executable(skeletalAnimationSample skeletalAnimationSample.cpp)
target_link_libraries(skeletalAnimationSample ${LIB_NAME})
add_executable(morphAnimationSample morphAnimationSample.cpp)
target_link_libraries(morphAnimationSample ${LIB_NAME})
add_executable(driverSample driverSample.cpp)
target_link_libraries(driverSample ${LIB_NAME})
add_executable(lightSample lightSample.cpp)
target_link_libraries(lightSample ${LIB_NAME})
add_executable(shadowSample shadowSample.cpp)
target_link_libraries(shadowSample ${LIB_NAME})
endif()