Advertisement
Guest User

trouble with cmake

a guest
May 5th, 2014
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
CMake 4.49 KB | None | 0 0
  1. set(PROGRAM_NAME filesystem_demonstration_program)
  2. set(SOURCE_FOLDER ${CMAKE_CURRENT_SOURCE_DIR}/source)
  3.  
  4. #compiler flag settings
  5. set(BUILD_RELEASE FALSE) #default debug
  6. set(CPLUSPLUS_11 TRUE)
  7. set(C_11 TRUE)
  8. set(STRICT_COMPILE TRUE)
  9. set(STATIC_COMPILE TRUE)
  10. set(OPTIMIZE_BUILD_FLAGS TRUE) #will only be used for release.  :)
  11.  
  12. #boost settings
  13. set(USING_BOOST_LIBRARY TRUE)
  14. set(BOOST_LIB_COMPONENTS filesystem system) #change these library filenames if necessary
  15. set(BOOST_LIB_COMPONENTS_LITERAL libboost_filesystem.a libboost_system.a)
  16.  
  17. #ncurses settings
  18. set(USING_NCURSES_LIBRARY TRUE)
  19. set(NCURSES_LIB_COMPONENTS ncurses) #change these library filenames if necessary
  20. set(NCURSES_LIB_COMPONENTS_LITERAL libncurses.a)
  21.  
  22. #-------------------------------------------------------------------------------------------------
  23. #cmake settings:
  24.  
  25. #CMAKE_CXX_FLAGS_DEBUG = debug
  26. #CMAKE_CXX_FLAGS_RELEASE = release
  27. #CMAKE_CXX_FLAGS = no flags
  28. if(BUILD_RELEASE) #this makes it easier to switch between release and debug
  29.     set(CMAKE_BUILD_TYPE Release)
  30. else()
  31.     set(CMAKE_BUILD_TYPE Debug)
  32. endif()
  33.  
  34. set(BUILD_SHARED_LIBS OFF)
  35.  
  36.  
  37. # =================================================================================================
  38. # =================================================================================================
  39. # =================================================================================================
  40. # =================================================================================================
  41.  
  42.  
  43. #sets c++11
  44. macro(use_cplusplus11)
  45.     set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}\ -std=c++11)
  46. endmacro(use_cplusplus11)
  47.  
  48. #sets c99
  49. macro(use_c99)
  50.     set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}\ -std=c99)
  51. endmacro(use_c99)
  52.  
  53. #sets c11
  54. macro(use_c11)
  55.     set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}\ -std=c11)
  56. endmacro(use_c11)
  57.  
  58. #sets strict
  59. macro(set_strict)
  60.     set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}\ -Wall\ -pedantic\ -Wextra)
  61. endmacro(set_strict)
  62.  
  63. #sets static
  64. macro(set_static)
  65.     set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}\ -static)
  66. endmacro(set_static)
  67.  
  68. #adds optimization flags
  69. macro(add_build_optimizations)
  70.     if(BUILD_RELEASE)
  71.         set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}\ -O\ -Os)
  72.     endif()
  73. endmacro(add_build_optimizations)
  74.  
  75. #adds boost library
  76. macro(add_boost)
  77.     set(Boost_USE_STATIC_LIBS ON)
  78.     set(Boost_USE_MULTITHREADED OFF)  
  79.     set(Boost_USE_STATIC_RUNTIME ON)
  80.     set(BOOST_LIBS filesystem system)
  81.     find_package(Boost REQUIRED COMPONENTS ${BOOST_LIB_COMPONENTS})
  82.     if(Boost_FOUND)
  83.         include_directories(${Boost_INCLUDE_DIRS})
  84.         link_directories(${Boost_LIBRARY_DIRS})
  85.         target_link_libraries(${PROGRAM_NAME} ${BOOST_LIB_COMPONENTS_LITERAL})
  86.     else()
  87.         message("FATAL ERROR: boost library not found!")
  88.     endif()
  89. endmacro(add_boost)
  90.  
  91. #adds ncurses library
  92. macro(add_ncurses)
  93.     set(CURSES_NEED_NCURSES TRUE)
  94.     find_package(Curses 5.9 REQUIRED COMPONENTS ${NCURSES_LIB_COMPONENTS}) #you will need to modify this to add the libraries you need
  95.     if(CURSES_FOUND)
  96.         include_directories(${CURSES_INCLUDE_DIR})
  97.         add_library(CURSES_LIBRARIES STATIC IMPORTED)
  98.         target_link_libraries(${PROGRAM_NAME} ${NCURSES_LIB_COMPONENTS})
  99.     else()
  100.         message("FATAL ERROR: curses library not found!")
  101.     endif()
  102. endmacro(add_ncurses)
  103.  
  104. #adds executable and source files
  105. macro(add_files)
  106.     file(GLOB_RECURSE CPP_SOURCE RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "${SOURCE_FOLDER}/*.cpp" "${SOURCE_FOLDER}/*.hpp")
  107.     add_executable(${PROGRAM_NAME} ${CPP_SOURCE})
  108.     file(GLOB_RECURSE CPP "${SOURCE_FOLDER}/*.cpp" "${SOURCE_FOLDER}/*.hpp")
  109.     link_directories(${CPP})
  110. endmacro(add_files)
  111.  
  112. cmake_minimum_required(VERSION 2.8)
  113. set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules" ${CMAKE_MODULE_PATH})
  114. project(${PROGRAM_NAME})
  115.  
  116. if(STRICT_COMPILE)
  117.     set_strict()
  118. endif()
  119.  
  120. if(OPTIMIZE_BUILD_FLAGS)
  121.     add_build_optimizations()
  122. endif()
  123.  
  124. if(STATIC_COMPILE)
  125.     set_static()
  126. endif()
  127.  
  128. if(CPLUSPLUS_11)
  129.     use_cplusplus11()
  130. endif()
  131.  
  132. if(USING_BOOST_LIBRARY)
  133.     foreach(temp ${BOOST_LIB_COMPONENTS_LITERAL})
  134.         set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}\ -l:${temp})
  135.     endforeach(temp)
  136. endif()
  137.  
  138. if(USING_NCURSES_LIBRARY)
  139.     foreach(temp2 ${NCURSES_LIB_COMPONENTS_LITERAL})
  140.         set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}\ -l:${temp2})
  141.     endforeach(temp2)
  142. endif()
  143.  
  144. add_files()
  145.  
  146. if(USING_NCURSES_LIBRARY)
  147.     add_ncurses()
  148. endif()
  149.  
  150. if(USING_BOOST_LIBRARY)
  151.     add_boost()
  152. endif()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement