qtk/src/qtk/CMakeLists.txt

100 lines
3.1 KiB
CMake

################################################################################
## Project for working with OpenGL and Qt6 widgets ##
## ##
## Author: Shaun Reed | Contact: shaunrd0@gmail.com | URL: www.shaunreed.com ##
## All Content (c) 2023 Shaun Reed, all rights reserved ##
################################################################################
# TODO: Provide option for linking MainWindow with plugin statically
# TODO: QtkWidget plugin should instantiate a ptr to DebugConsole and store it as a member.
# Then we can connect a signal from MainWindow for creating a console to QtkWidget
# When triggered QtkWidget slot will send signal to MainWindow
# MainWindow catches signal and runs slot to attach DebugConsole to MainWindow as QDockWidget
# TODO: Create a second repository for working on QtkApplication (MainWindow)
################################################################################
# Qtk Library
################################################################################
set(PUBLIC_HEADERS
camera3d.h
input.h
shape.h
meshrenderer.h
model.h
modelmesh.h
object.h
qtkapi.h
scene.h
skybox.h
texture.h
transform3D.h
)
set(SOURCE_FILES
camera3d.cpp
input.cpp
shape.cpp
meshrenderer.cpp
model.cpp
modelmesh.cpp
object.cpp
scene.cpp
skybox.cpp
texture.cpp
transform3D.cpp
)
qt_add_library(qtk-library SHARED)
target_sources(qtk-library PRIVATE ${SOURCE_FILES})
target_sources(qtk-library PUBLIC
FILE_SET HEADERS
BASE_DIRS ${CMAKE_SOURCE_DIR}/src
FILES ${PUBLIC_HEADERS}
)
if(QTK_DEBUG)
target_compile_definitions(qtk-library PUBLIC QTK_DEBUG)
endif()
if(QTK_SHARED)
target_compile_definitions(qtk-library PUBLIC QTK_SHARED)
endif()
set_target_properties(qtk-library PROPERTIES
WIN32_EXECUTABLE TRUE
MACOSX_BUNDLE TRUE
VERSION ${PROJECT_VERSION}
)
target_link_libraries(qtk-library PUBLIC
Qt6::Core Qt6::OpenGLWidgets Qt6::Widgets
)
if(QTK_UPDATE_SUBMODULES OR NOT ASSIMP_NEW_INTERFACE)
target_link_libraries(qtk-library PUBLIC assimp)
elseif(ASSIMP_NEW_INTERFACE)
target_link_libraries(qtk-library PUBLIC assimp::assimp)
endif()
if(WIN32)
target_link_libraries(qtk-library PUBLIC OpenGL::GL)
endif()
# System install for qtk-library
# TODO: Use RUNTIME_DEPENDENCY_SET to install Qt libraries for local builds?
install(TARGETS qtk-library
# Associate qtk-library target with qtk-export
EXPORT qtk-export
FILE_SET HEADERS DESTINATION "${QTK_INSTALL_PREFIX}/include"
BUNDLE DESTINATION ${QTK_INSTALL_PREFIX}/lib
LIBRARY DESTINATION ${QTK_INSTALL_PREFIX}/lib
ARCHIVE DESTINATION ${QTK_INSTALL_PREFIX}/lib/static
RUNTIME DESTINATION ${QTK_INSTALL_PREFIX}/bin
)
## Install qtk-library to Qt Designer to support widget plugins.
install(TARGETS qtk-library
BUNDLE DESTINATION ${QTK_PLUGIN_LIBRARY_DIR}
LIBRARY DESTINATION ${QTK_PLUGIN_LIBRARY_DIR}
ARCHIVE DESTINATION ${QTK_PLUGIN_LIBRARY_DIR}
RUNTIME DESTINATION ${QTK_PLUGIN_LIBRARY_DIR}
)