From 20fc3e70d924e18d72fee9f7e7ffbcee9fe4db36 Mon Sep 17 00:00:00 2001 From: Krishna Vedala <7001608+kvedala@users.noreply.github.com> Date: Tue, 7 Jul 2020 17:38:01 -0400 Subject: [PATCH] compile FREEGLUT as a subdirectory. this maintains a consistency --- graphics/CMakeLists.txt | 37 ++++++++++++++++++++++++++++--------- graphics/spirograph.cpp | 14 +++++++------- 2 files changed, 35 insertions(+), 16 deletions(-) diff --git a/graphics/CMakeLists.txt b/graphics/CMakeLists.txt index ecf21e2a6..be6e1a3e4 100644 --- a/graphics/CMakeLists.txt +++ b/graphics/CMakeLists.txt @@ -4,21 +4,38 @@ if(OpenGL_FOUND) if(NOT GLUT_FOUND) message("FreeGLUT library will be downloaded and built.") include(ExternalProject) - # Include GLFW ExternalProject_Add ( FREEGLUT URL https://sourceforge.net/projects/freeglut/files/freeglut/3.2.1/freeglut-3.2.1.tar.gz URL_MD5 cd5c670c1086358598a6d4a9d166949d - CMAKE_ARGS -DCMAKE_BUILD_TYPE=RelWithDebInfo - -DFREEGLUT_BUILD_SHARED_LIBS=ON + CMAKE_GENERATOR ${CMAKE_GENERATOR} + CMAKE_GENERATOR_TOOLSET ${CMAKE_GENERATOR_TOOLSET} + CMAKE_GENERATOR_PLATFORM ${CMAKE_GENERATOR_PLATFORM} + CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release + -DFREEGLUT_BUILD_SHARED_LIBS=OFF -DFREEGLUT_BUILD_STATIC_LIBS=ON -DFREEGLUT_BUILD_DEMOS=OFF PREFIX ${CMAKE_CURRENT_BINARY_DIR}/freeglut - BUILD_IN_SOURCE ON + # BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/freeglut-build + # BUILD_IN_SOURCE ON + # UPDATE_COMMAND "" INSTALL_COMMAND "" + CONFIGURE_COMMAND "" + BUILD_COMMAND "" ) ExternalProject_Get_Property(FREEGLUT SOURCE_DIR) - set(FREEGLUT_DIR ${SOURCE_DIR}) + ExternalProject_Get_Property(FREEGLUT BINARY_DIR) + set(FREEGLUT_BIN_DIR ${BINARY_DIR}) + set(FREEGLUT_SRC_DIR ${SOURCE_DIR}) + # add_library(libfreeglut STATIC IMPORTED) + # set_target_properties(libfreeglut PROPERTIES IMPORTED_LOCATION ${FREEGLUT_BIN_DIR}) + + set(FREEGLUT_BUILD_DEMOS OFF CACHE BOOL "") + set(FREEGLUT_BUILD_SHARED_LIBS OFF CACHE BOOL "") + set(FREEGLUT_BUILD_STATIC_LIBS ON CACHE BOOL "") + add_subdirectory(${FREEGLUT_SRC_DIR} ${FREEGLUT_BIN_DIR}) + # add_subdirectory(${BINARY_DIR}) + # find_package(FreeGLUT) endif(NOT GLUT_FOUND) else(OpenGL_FOUND) message(WARNING "OPENGL not found. Will not build graphical outputs.") @@ -35,7 +52,7 @@ foreach( testsourcefile ${APP_SOURCES} ) string( REPLACE ".cpp" "" testname ${testsourcefile} ) add_executable( ${testname} ${testsourcefile} ) - # set_target_properties(${testname} PROPERTIES LINKER_LANGUAGE CXX) + set_target_properties(${testname} PROPERTIES LINKER_LANGUAGE CXX) if(OpenMP_CXX_FOUND) target_link_libraries(${testname} PRIVATE OpenMP::OpenMP_CXX) endif() @@ -43,9 +60,11 @@ foreach( testsourcefile ${APP_SOURCES} ) if(OpenGL_FOUND) if(NOT GLUT_FOUND) add_dependencies(${testname} FREEGLUT) - target_include_directories(${testname} PRIVATE ${FREEGLUT_DIR}/include) - target_link_directories(${testname} PRIVATE ${FREEGLUT_DIR}/lib) - target_link_libraries(${testname} PRIVATE freeglut OpenGL::GL) + target_include_directories(${testname} PRIVATE ${FREEGLUT_SRC_DIR}/include) + target_link_directories(${testname} PRIVATE ${FREEGLUT_BIN_DIR}/lib) + target_link_libraries(${testname} PRIVATE OpenGL::GL freeglut_static) + # target_include_directories(${testname} PRIVATE ${FREEGLUT_INCLUDE_DIRS}) + # target_link_libraries(${testname} INTERFACE freeglut_static) else() target_include_directories(${testname} PRIVATE ${GLUT_INCLUDE_DIRS}) target_link_libraries(${testname} PRIVATE OpenGL::GL ${GLUT_LIBRARIES}) diff --git a/graphics/spirograph.cpp b/graphics/spirograph.cpp index f4b526ac5..f357f2210 100644 --- a/graphics/spirograph.cpp +++ b/graphics/spirograph.cpp @@ -13,6 +13,13 @@ * src="https://upload.wikimedia.org/wikipedia/commons/3/39/Resonance_Cascade.svg" * alt="Spirograph geometry from Wikipedia" style="width: 250px"/> */ +#ifdef USE_GLUT +#ifdef __APPLE__ +#include // include path on Macs is different +#else +#include +#endif // __APPLE__ +#endif #define _USE_MATH_DEFINES /**< required for MSVC compiler */ #include #include @@ -25,13 +32,6 @@ #ifdef _OPENMP #include #endif -#ifdef USE_GLUT -#ifdef __APPLE__ -#include // include path on Macs is different -#else -#include -#endif // __APPLE__ -#endif /** * @namespace spirograph Functions related to spirograph.cpp