cmake_minimum_required(VERSION 3.2) project(glTest) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -DGLEW_STATIC -O0 -g") set(CMAKE_BUILD_TYPE DEBUG) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin) if(APPLE) find_library(COCOA_FRAMEWORK Cocoa) find_library(OPENGL_FRAMEWORK OpenGL) find_library(IOKIT_FRAMEWORK IOKit) find_library(COREVIDEO_FRAMEWORK CoreVideo) set(REQUIRED_LIBRARIES ${COCOA_FRAMEWORK} ${OPENGL_FRAMEWORK} ${IOKIT_FRAMEWORK} ${COREVIDEO_FRAMEWORK}) else() find_package(OpenGL REQUIRED) find_library(x11 NAMES X11) find_library(xrandr NAMES Xrandr) find_library(xi NAMES Xi) find_library(xxf86vm NAMES Xxf86vm) find_library(pthread NAMES pthread) find_library(Xinerama NAMES Xinerama) find_library(Xcursor NAMES Xcursor) set(REQUIRED_LIBRARIES rt asound ${OPENGL_LIBRARIES} ${x11} ${xrandr} ${xi} ${xxf86vm} ${Xinerama} ${Xcursor} ${pthread}) endif() INCLUDE(ExternalProject) SET_DIRECTORY_PROPERTIES(PROPERTIES EP_PREFIX ${CMAKE_BINARY_DIR}/ThirdParty) ExternalProject_Add( glfw URL http://netcologne.dl.sourceforge.net/project/glfw/glfw/3.1.1/glfw-3.1.1.zip TIMEOUT 100 CMAKE_ARGS -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH=${CMAKE_SOURCE_DIR}/lib -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH=${CMAKE_SOURCE_DIR}/lib -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} INSTALL_COMMAND "" LOG_DOWNLOAD ON LOG_CONFIGURE ON LOG_BUILD ON) ExternalProject_Get_Property(glfw source_dir) ExternalProject_Get_Property(glfw binary_dir) include_directories(${source_dir}/include) ExternalProject_Add( glew URL http://vorboss.dl.sourceforge.net/project/glew/glew/1.12.0/glew-1.12.0.zip CONFIGURE_COMMAND "" BUILD_COMMAND "make" BUILD_IN_SOURCE 1 INSTALL_COMMAND cp ${CMAKE_BINARY_DIR}/ThirdParty/src/glew/lib/libGLEW.a ${CMAKE_SOURCE_DIR}/lib LOG_DOWNLOAD ON LOG_CONFIGURE ON LOG_BUILD ON ) ExternalProject_Get_Property(glew source_dir) ExternalProject_Get_Property(glew binary_dir) include_directories(${source_dir}/include) set(GLEW_SRC_DIR ${source_dir}) ExternalProject_Add( glm URL http://vorboss.dl.sourceforge.net/project/ogl-math/glm-0.9.6.3/glm-0.9.6.3.zip TIMEOUT 100 CMAKE_ARGS -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH=${CMAKE_SOURCE_DIR}/lib -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH=${CMAKE_SOURCE_DIR}/lib -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} INSTALL_COMMAND "" LOG_DOWNLOAD ON LOG_CONFIGURE ON LOG_BUILD ON) ExternalProject_Get_Property(glm source_dir) ExternalProject_Get_Property(glm binary_dir) include_directories(${source_dir}) ExternalProject_Add( portaudio URL http://www.portaudio.com/archives/pa_stable_v19_20140130.tgz TIMEOUT 100 CONFIGURE_COMMAND ${CMAKE_BINARY_DIR}/ThirdParty/src/portaudio/configure --enable-cxx BUILD_COMMAND "/usr/bin/make" BUILD_IN_SOURCE 1 INSTALL_COMMAND cp ${CMAKE_BINARY_DIR}/ThirdParty/src/portaudio/lib/.libs/libportaudio.a ${CMAKE_SOURCE_DIR}/lib LOG_DOWNLOAD ON LOG_CONFIGURE ON LOG_BUILD ON) ExternalProject_Get_Property(portaudio source_dir) ExternalProject_Get_Property(portaudio binary_dir) include_directories(${source_dir}/include) ExternalProject_Add( libsndfile URL "http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.25.tar.gz" CONFIGURE_COMMAND ${CMAKE_BINARY_DIR}/ThirdParty/src/libsndfile/configure --disable-external-libs BUILD_COMMAND "/usr/bin/make" UPDATE_COMMAND "" INSTALL_COMMAND cp ${CMAKE_BINARY_DIR}/ThirdParty/src/libsndfile/src/.libs/libsndfile.a ${CMAKE_SOURCE_DIR}/lib BUILD_IN_SOURCE 1 LOG_DOWNLOAD ON LOG_CONFIGURE ON LOG_BUILD ON ) ExternalProject_Get_Property(libsndfile source_dir) ExternalProject_Get_Property(libsndfile binary_dir) #include_directories(${source_dir}/include) ExternalProject_Add( fftw URL "http://www.fftw.org/fftw-3.3.4.tar.gz" CONFIGURE_COMMAND ${CMAKE_BINARY_DIR}/ThirdParty/src/fftw/configure --enable-float BUILD_COMMAND "/usr/bin/make" UPDATE_COMMAND "" INSTALL_COMMAND cp ${CMAKE_BINARY_DIR}/ThirdParty/src/fftw/.libs/libfftw3f.a ${CMAKE_SOURCE_DIR}/lib BUILD_IN_SOURCE 1 LOG_DOWNLOAD ON LOG_CONFIGURE ON LOG_BUILD ON ) ExternalProject_Get_Property(fftw source_dir) include_directories(${source_dir}/api) set(SOURCE_FILES src/main.cpp) add_executable(glTest ${SOURCE_FILES} src/ShaderProgram.cpp src/ShaderProgram.h src/Mesh.cpp src/Mesh.h src/vertex.h src/IGLObject.h src/GLObject.cpp src/GLObject.h src/WaveMesh.cpp src/WaveMesh.h src/AudioPlayer.cpp src/AudioPlayer.h src/ISndSource.h src/WavSource.cpp src/WavSource.h src/SpectralMesh.cpp src/SpectralMesh.h) add_dependencies(glTest glfw glew glm portaudio libsndfile fftw) target_link_libraries(glTest ${GLFW_LIBRARIES} ${REQUIRED_LIBRARIES} ${CMAKE_SOURCE_DIR}/lib/libglfw3.a ${CMAKE_SOURCE_DIR}/lib/libGLEW.a ${CMAKE_SOURCE_DIR}/lib/libportaudio.a ${CMAKE_SOURCE_DIR}/lib/libsndfile.a ${CMAKE_SOURCE_DIR}/lib/libfftw3f.a)