cmake_minimum_required(VERSION 3.13) set(ENV{CUDAHOSTCXX} "g++-5") project(opengltest LANGUAGES C CXX CUDA) set(CMAKE_CXX_STANDARD 14) set(LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libraries") find_package(OpenGL REQUIRED) find_package(CUDA) add_executable(${PROJECT_NAME} main.cpp) # GLFW find_package(PkgConfig REQUIRED) pkg_search_module(GLFW REQUIRED glfw3) include_directories(${GLFW_INCLUDE_DIRS}) target_link_libraries(${PROJECT_NAME} ${GLFW_STATIC_LIBRARIES}) # GLAD set(GLAD_DIR "${LIB_DIR}/glad") set(GLAD_NAME "glad") add_library(${GLAD_NAME} "${GLAD_DIR}/src/glad.c") target_include_directories(${GLAD_NAME} PRIVATE "${GLAD_DIR}/include") target_include_directories(${PROJECT_NAME} PRIVATE "${GLAD_DIR}/include") target_link_libraries(${PROJECT_NAME} ${GLAD_NAME} "${CMAKE_DL_LIBS}") # stb_image target_include_directories(${PROJECT_NAME} PRIVATE "${LIB_DIR}/stb_image") # shader target_include_directories(${PROJECT_NAME} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/learnopengl") # Point set(POINT_LIB "point_lib") set(POINT_DIR "${LIB_DIR}/point") add_library(${POINT_LIB} "${POINT_DIR}/Point.cpp") target_link_libraries(${PROJECT_NAME} ${POINT_LIB}) target_include_directories(${PROJECT_NAME} PRIVATE ${POINT_DIR}) # Canvas set(CANVAS_LIB "canvas_lib") add_library(${CANVAS_LIB} Canvas/Canvas.cpp Canvas/Canvas.h) target_include_directories(${CANVAS_LIB} PRIVATE ${POINT_DIR}) target_include_directories(${CANVAS_LIB} PRIVATE "${GLAD_DIR}/include") target_include_directories(${CANVAS_LIB} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/learnopengl") target_link_libraries(${PROJECT_NAME} ${CANVAS_LIB}) target_include_directories(${PROJECT_NAME} PRIVATE "Canvas/") if(${CUDA_FOUND}) set(GENERATE_CANVAS_LIB "generate_canvas_lib_cuda") cuda_add_library(${GENERATE_CANVAS_LIB} STATIC Canvas/gpu/CalculateCanvas.cu Canvas/gpu/CalculateCanvas.h) target_compile_features(${GENERATE_CANVAS_LIB} PUBLIC cxx_std_11) set_target_properties(${GENERATE_CANVAS_LIB} PROPERTIES CUDA_SEPARABLE_COMPILATION ON) target_include_directories(${CANVAS_LIB} PRIVATE "Canvas/gpu") else() set(GENERATE_CANVAS_LIB "generate_canvas_lib") add_library(${GENERATE_CANVAS_LIB} Canvas/cpu/CalculateCanvas.cpp Canvas/cpu/CalculateCanvas.h) target_compile_features(${GENERATE_CANVAS_LIB} PUBLIC cxx_std_11) target_include_directories(${CANVAS_LIB} PRIVATE "Canvas/cpu") endif() target_include_directories(${GENERATE_CANVAS_LIB} PRIVATE ${POINT_DIR}) target_link_libraries(${CANVAS_LIB} ${GENERATE_CANVAS_LIB})