From 80d126cfa2f0363b04690eeab335c136b67fc028 Mon Sep 17 00:00:00 2001 From: zmertens Date: Wed, 1 Apr 2015 19:37:41 -0700 Subject: [PATCH 1/5] added bin directory to build process to allow resources to load from exectuable --- CMakeLists.txt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fd7ba81..7479538 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -115,7 +115,7 @@ foreach(CHAPTER ${CHAPTERS}) target_link_libraries(${DEMO} ${LIBS}) set_target_properties(${DEMO} PROPERTIES - RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin/${CHAPTER}" + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin/bin/${CHAPTER}" ) # copy shader files to build directory file(GLOB SHADERS @@ -138,6 +138,4 @@ endforeach(CHAPTER) include_directories(${CMAKE_SOURCE_DIR}/includes) -file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/resources DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) - From 5c97e68cf4db8738f2ef5478e0b3578ad197db03 Mon Sep 17 00:00:00 2001 From: zmertens Date: Wed, 1 Apr 2015 19:48:25 -0700 Subject: [PATCH 2/5] modified Find*.cmake files to look in the LearnOpenGL local includes and lib directories --- cmake/modules/FindASSIMP.cmake | 2 ++ cmake/modules/FindGLEW.cmake | 2 ++ cmake/modules/FindGLFW3.cmake | 2 ++ cmake/modules/FindGLM.cmake | 1 + cmake/modules/FindSOIL.cmake | 2 ++ 5 files changed, 9 insertions(+) diff --git a/cmake/modules/FindASSIMP.cmake b/cmake/modules/FindASSIMP.cmake index 571085f..5b6c1cc 100644 --- a/cmake/modules/FindASSIMP.cmake +++ b/cmake/modules/FindASSIMP.cmake @@ -8,12 +8,14 @@ FIND_PATH( ASSIMP_INCLUDE_DIR assimp/mesh.h /usr/include /usr/local/include /opt/local/include + ${CMAKE_SOURCE_DIR}/includes ) FIND_LIBRARY( ASSIMP_LIBRARY assimp /usr/lib64 /usr/lib /usr/local/lib /opt/local/lib + ${CMAKE_SOURCE_DIR}/lib ) IF(ASSIMP_INCLUDE_DIR AND ASSIMP_LIBRARY) SET( ASSIMP_FOUND TRUE ) diff --git a/cmake/modules/FindGLEW.cmake b/cmake/modules/FindGLEW.cmake index 68c87f8..71db5d4 100644 --- a/cmake/modules/FindGLEW.cmake +++ b/cmake/modules/FindGLEW.cmake @@ -8,6 +8,7 @@ # IF (WIN32) FIND_PATH( GLEW_INCLUDE_PATH GL/glew.h + ${CMAKE_SOURCE_DIR}/includes $ENV{PROGRAMFILES}/GLEW/include ${GLEW_ROOT_DIR}/include DOC "The directory where GL/glew.h resides") @@ -24,6 +25,7 @@ IF (WIN32) FIND_LIBRARY( GLEW_LIBRARY NAMES glew GLEW glew32 glew32s PATHS + ${CMAKE_SOURCE_DIR}/lib $ENV{PROGRAMFILES}/GLEW/lib ${PROJECT_SOURCE_DIR}/src/nvgl/glew/bin ${PROJECT_SOURCE_DIR}/src/nvgl/glew/lib diff --git a/cmake/modules/FindGLFW3.cmake b/cmake/modules/FindGLFW3.cmake index b50e684..27213bf 100644 --- a/cmake/modules/FindGLFW3.cmake +++ b/cmake/modules/FindGLFW3.cmake @@ -17,6 +17,8 @@ set( _glfw3_HEADER_SEARCH_DIRS "/usr/include" "/usr/local/include" +"${CMAKE_SOURCE_DIR}/includes" +"${CMAKE_SOURCE_DIR}/lib" "C:/Program Files (x86)/glfw/include" ) set( _glfw3_LIB_SEARCH_DIRS "/usr/lib" diff --git a/cmake/modules/FindGLM.cmake b/cmake/modules/FindGLM.cmake index 430049e..a499f14 100644 --- a/cmake/modules/FindGLM.cmake +++ b/cmake/modules/FindGLM.cmake @@ -32,6 +32,7 @@ SET(_glm_HEADER_SEARCH_DIRS "/usr/include" "/usr/local/include" +"${CMAKE_SOURCE_DIR}/includes" "C:/Program Files (x86)/glm" ) # check environment variable SET(_glm_ENV_ROOT_DIR "$ENV{GLM_ROOT_DIR}") diff --git a/cmake/modules/FindSOIL.cmake b/cmake/modules/FindSOIL.cmake index 36c10e3..81a703a 100644 --- a/cmake/modules/FindSOIL.cmake +++ b/cmake/modules/FindSOIL.cmake @@ -12,6 +12,8 @@ find_path(SOIL_INCLUDE_DIR_TMP SOIL.h HINTS ${SOIL_ROOT_DIR} PATH_SUFFIXES include/SOIL SOIL include + ${CMAKE_SOURCE_DIR}/includes + ${CMAKE_SOURCE_DIR}/lib ) if(${SOIL_INCLUDE_DIR_TMP} STREQUAL "SOIL_INCLUDE_DIR_TMP-NOTFOUND") set(SOIL_INCLUDE_DIR ${SOIL_INCLUDE_DIR_TMP}) From 3d71a928ce6edd3440a6fee43517174a39b6ce4b Mon Sep 17 00:00:00 2001 From: zmertens Date: Wed, 1 Apr 2015 19:52:15 -0700 Subject: [PATCH 3/5] modified README --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 26e1d4f..937cd10 100644 --- a/README.md +++ b/README.md @@ -9,5 +9,5 @@ The CMake script knows where to find the libraries so just run CMake script and Note that you still have to manually copy the required .DLL files from the /dlls folder to your binary folder for the binaries to run. ## Linux building -First get the required packages: -Use root (sudo) and type `apt-get install libsoil-dev libglm-dev libassimp-dev libglew-dev libglfw-dev` \ No newline at end of file +First make sure you have CMake, Git, and GCC by typing as root (sudo) `apt-get install g++ cmake git` and then get the required packages: +Using root (sudo) and type `apt-get install libsoil-dev libglm-dev libassimp-dev libglew-dev libglfw-dev` From ea910a55ca18550f8b22ea5e00089e682c618326 Mon Sep 17 00:00:00 2001 From: zmertens Date: Thu, 2 Apr 2015 13:48:28 -0700 Subject: [PATCH 4/5] changed Win32 and Unix method for copying shaders and executables --- CMakeLists.txt | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7479538..c06e293 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,7 +9,11 @@ IF(NOT CMAKE_BUILD_TYPE) ENDIF(NOT CMAKE_BUILD_TYPE) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules/") -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin) + +if(WIN32) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin) +endif(WIN32) + link_directories(${CMAKE_SOURCE_DIR}/lib) list(APPEND CMAKE_CXX_FLAGS "-std=c++11") @@ -31,7 +35,7 @@ message(STATUS "Found GLEW in ${GLEW_INCLUDE_DIR}") if(WIN32) set(LIBS glfw3 opengl32 glew32s SOIL assimp) -elseif (UNIX) +elseif(UNIX) set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall") # Linux packages native to CMake find_package(OpenGL REQUIRED) @@ -48,7 +52,7 @@ elseif (UNIX) list(APPEND LIBS ${ASSIMP_LIBRARY}) else() set(LIBS ) -endif() +endif(WIN32) IF(APPLE) INCLUDE_DIRECTORIES(/System/Library/Frameworks) @@ -113,21 +117,23 @@ foreach(CHAPTER ${CHAPTERS}) ) add_executable(${DEMO} ${SOURCE}) target_link_libraries(${DEMO} ${LIBS}) - set_target_properties(${DEMO} - PROPERTIES - RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin/bin/${CHAPTER}" - ) + if(WIN32) + set_target_properties(${DEMO} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin/${CHAPTER}") + endif(WIN32) # copy shader files to build directory file(GLOB SHADERS - "src/${CHAPTER}/${DEMO}/*.vs" + "src/${CHAPTER}/${DEMO}/*.vs" "src/${CHAPTER}/${DEMO}/*.frag" "src/${CHAPTER}/${DEMO}/*.gs" ) foreach(SHADER ${SHADERS}) - # configure_file(${SHADER} "test") - add_custom_command(TARGET ${DEMO} PRE_BUILD - COMMAND ${CMAKE_COMMAND} -E - copy ${SHADER} $) + if(WIN32) + # configure_file(${SHADER} "test") + add_custom_command(TARGET ${DEMO} PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${SHADER} $) + elseif(UNIX) + file(COPY ${SHADER} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) + endif(WIN32) + endforeach(SHADER) # if compiling for visual studio, also use configure file for each project (specifically to setup working directory) if(MSVC) @@ -138,4 +144,7 @@ endforeach(CHAPTER) include_directories(${CMAKE_SOURCE_DIR}/includes) +if(UNIX) + file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/resources DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) +endif(UNIX) From 27f3a2b9bc091480fc38abd862edb7fc234ffefc Mon Sep 17 00:00:00 2001 From: zwookie Date: Sat, 4 Apr 2015 02:55:33 -0700 Subject: [PATCH 5/5] fixed CMake lib / includes path finding during configuration --- cmake/modules/FindGLFW3.cmake | 2 +- cmake/modules/FindSOIL.cmake | 47 ++++++++++++++++++++--------------- 2 files changed, 28 insertions(+), 21 deletions(-) diff --git a/cmake/modules/FindGLFW3.cmake b/cmake/modules/FindGLFW3.cmake index 27213bf..13bbb84 100644 --- a/cmake/modules/FindGLFW3.cmake +++ b/cmake/modules/FindGLFW3.cmake @@ -18,11 +18,11 @@ set( _glfw3_HEADER_SEARCH_DIRS "/usr/include" "/usr/local/include" "${CMAKE_SOURCE_DIR}/includes" -"${CMAKE_SOURCE_DIR}/lib" "C:/Program Files (x86)/glfw/include" ) set( _glfw3_LIB_SEARCH_DIRS "/usr/lib" "/usr/local/lib" +"${CMAKE_SOURCE_DIR}/lib" "C:/Program Files (x86)/glfw/lib-msvc110" ) # Check environment for root search directory diff --git a/cmake/modules/FindSOIL.cmake b/cmake/modules/FindSOIL.cmake index 81a703a..97b3047 100644 --- a/cmake/modules/FindSOIL.cmake +++ b/cmake/modules/FindSOIL.cmake @@ -9,27 +9,34 @@ # # author: Kazunori Kimura # email : kazunori.abu@gmail.com -find_path(SOIL_INCLUDE_DIR_TMP SOIL.h - HINTS ${SOIL_ROOT_DIR} - PATH_SUFFIXES include/SOIL SOIL include +# +# revisions: github.com/zwookie + +find_path(SOIL_INCLUDE_DIR SOIL.h + /usr/include + /usr/local/include + /opt/local/include ${CMAKE_SOURCE_DIR}/includes +) + +find_library(SOIL_LIBRARY SOIL + /usr/lib64 + /usr/lib + /usr/local/lib + /opt/local/lib ${CMAKE_SOURCE_DIR}/lib ) -if(${SOIL_INCLUDE_DIR_TMP} STREQUAL "SOIL_INCLUDE_DIR_TMP-NOTFOUND") - set(SOIL_INCLUDE_DIR ${SOIL_INCLUDE_DIR_TMP}) -else() - string(REGEX REPLACE "(.*)/SOIL" "\\1" SOIL_INCLUDE_DIR ${SOIL_INCLUDE_DIR_TMP}) -endif() -find_library(SOIL_LIBRARY - NAMES SOIL - HINTS ${SOIL_ROOT_DIR} - PATH_SUFFIXES lib -) - -unset(INCLUDE_SEARCH_PATH) -unset(LIB_SEARCH_PATH) -unset(SOIL_INCLUDE_DIR_TMP) -include(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(SOIL -REQUIRED_VARS SOIL_LIBRARY SOIL_INCLUDE_DIR) +IF(SOIL_INCLUDE_DIR AND SOIL_LIBRARY) + SET( SOIL_FOUND TRUE ) + SET( SOIL_LIBRARIES ${SOIL_LIBRARY} ) +ENDIF(SOIL_INCLUDE_DIR AND SOIL_LIBRARY) +IF(SOIL_FOUND) + IF(NOT SOIL_FIND_QUIETLY) + MESSAGE(STATUS "Found SOIL: ${SOIL_LIBRARY}") + ENDIF(NOT SOIL_FIND_QUIETLY) +ELSE(SOIL_FOUND) + IF(SOIL_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "Could not find libSOIL") + ENDIF(SOIL_FIND_REQUIRED) +ENDIF(SOIL_FOUND)