Skip to content
Snippets Groups Projects
CMakeLists.txt 3.34 KiB
Newer Older
# Check CMAKE version
cmake_minimum_required( VERSION 3.0 )

# Invite message
message( STATUS "----------------------------------------------------" )
message( STATUS "- PROJECT GENERATION : Concurrent Programming Tool -" )
message( STATUS "----------------------------------------------------" )
message( STATUS "" )

##################################################################################
# Project
##################################################################################

# Project name
project( CpViewer )

set( CMAKE_INSTALL_PREFIX "${CMAKE_SOURCE_DIR}/Install" )

# Remove some compilation warnings
add_definitions( -D_CRT_SECURE_NO_WARNINGS ) 

# GLFW
add_definitions( -DGLFW_DLL )

##################################################################################
# Package Management
##################################################################################

# OpenGL
find_package( OpenGL REQUIRED )

# OpenMP
find_package( OpenMP )

##################################################################################
# Include directories
##################################################################################

# glad
set( glad_DIR "${CMAKE_CURRENT_SOURCE_DIR}/3rdParty/glad/lib/cmake/glad" )
find_package( glad CONFIG REQUIRED )

# glm
set( glm_DIR "${CMAKE_CURRENT_SOURCE_DIR}/3rdParty/glm/lib/cmake/glm" )
find_package( glm CONFIG REQUIRED )
include_directories( ${GLM_INCLUDE_DIRS} )

# stb
include_directories( "${CMAKE_CURRENT_SOURCE_DIR}/3rdParty/stb" )

# glfw
set( glfw3_DIR ${CMAKE_CURRENT_SOURCE_DIR}/3rdParty/glfw/lib/cmake/glfw3 )
find_package( glfw3 CONFIG REQUIRED )

# imgui
set( ImGui_DIR "${CMAKE_CURRENT_SOURCE_DIR}/3rdParty/imgui" )
include_directories( "${ImGui_DIR}/include" )

##################################################################################
# Program
##################################################################################

# Retrieve source files
file( GLOB incList "${CMAKE_CURRENT_SOURCE_DIR}/*.h" )
file( GLOB srcList "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp" )

# Target program
add_executable( ${PROJECT_NAME} ${srcList} ${incList} )

#####################################################
set( CUSTOM_DEBUG_POSTFIX "d" )
set_target_properties( ${PROJECT_NAME} PROPERTIES DEBUG_POSTFIX ${CUSTOM_DEBUG_POSTFIX} )
#####################################################

##################################################################################
# Linked libraries
##################################################################################

# Graphics
target_link_libraries( ${PROJECT_NAME} ${OPENGL_gl_LIBRARY} )

# GLFW
target_link_libraries( ${PROJECT_NAME} glfw )

# glad
target_link_libraries( ${PROJECT_NAME} glad::glad )

# dlopen/dlclose
target_link_libraries( ${PROJECT_NAME} ${CMAKE_DL_LIBS} )

# ImGui
target_link_libraries( ${PROJECT_NAME} debug "${ImGui_DIR}/lib/ImGuid.lib" )
target_link_libraries( ${PROJECT_NAME} optimized "${ImGui_DIR}/lib/ImGui.lib" )

# OpenMP
if( OpenMP_CXX_FOUND )
    target_link_libraries( ${PROJECT_NAME} OpenMP::OpenMP_CXX )
endif()

# Project property
set_property( TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 11 )

##################################################################################
# Custom commands
##################################################################################

# Libraries
install( TARGETS ${PROJECT_NAME} DESTINATION bin )