From 3a94328b3cff255ac64a208ac98919cc3e530aa0 Mon Sep 17 00:00:00 2001 From: Andrew Date: Sun, 5 May 2019 22:53:12 +0400 Subject: Made changes to CMakeLists.txt so CUDA version of program builds when CUDA is installed. Replaced C-style approach to generating texture to OOP-style with Canvas.h --- CMakeLists.txt | 53 +++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 45 insertions(+), 8 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index a4ab4ee..cd9516e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,7 +8,7 @@ set(LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libraries") find_package(OpenGL REQUIRED) find_package(CUDA) -add_executable(${PROJECT_NAME} main.cpp point.h Canvas/Canvas.h) +add_executable(${PROJECT_NAME} main.cpp) # GLFW find_package(PkgConfig REQUIRED) @@ -16,6 +16,7 @@ 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") @@ -24,16 +25,52 @@ 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") -# CUDA -set(CUDA_LIB "cudalib") -#target_include_directories(${PROJECT_NAME} PRIVATE "Canvas/") -cuda_add_library(${CUDA_LIB} STATIC Canvas/cuda/CalculateCanvasGPU.cu Canvas/cuda/CalculateCanvasGPU.h OPTIONS -std=c++11) -target_compile_features(${CUDA_LIB} PUBLIC cxx_std_11) -set_target_properties(${CUDA_LIB} PROPERTIES CUDA_SEPARABLE_COMPILATION ON) -target_link_libraries(${PROJECT_NAME} ${CUDA_LIB}) + +# 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}) -- cgit v1.2.3