Skip to content

Instantly share code, notes, and snippets.

@Skycocoo
Last active January 16, 2019 00:52
Show Gist options
  • Save Skycocoo/89d77baef32f02bc9e687bc933df48c2 to your computer and use it in GitHub Desktop.
Save Skycocoo/89d77baef32f02bc9e687bc933df48c2 to your computer and use it in GitHub Desktop.
Cmake notes for basics & finding packages with cmake modules

Basic setting

cmake_minimum_required(VERSION 3.6)
project(project_name)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -std=c++14")

Find packages with cmake modules:

(e.g SDL2 & SDL2_IMAGE)

# cmake modules references:
# https://github.com/tcbrindle/sdl2-cmake-scripts
# https://trenki2.github.io/blog/2017/07/04/using-sdl2-image-with-cmake/

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")

find_package(SDL2 REQUIRED)
find_package(SDL2_IMAGE REQUIRED)

Find packages with cmake:

(e.g find OpenGL & GLEW)

find_package(OpenGL REQUIRED)
find_package(GLEW REQUIRED)

Set up include directories

(e.g src/extern/*.h & OpenGL)

include_directories(src/extern ${OPENGL_INCLUDE_DIR})

Compile all the cpp files; define and link to personalized library

(e.g checker)

file(GLOB checker_sources src/intern/\*.cpp)
set(checker ${checker_sources})
add_library(checker ${checker})

Add test file

(e.g src/main.cpp)

add_executable(main src/main.cpp)

Link test file to compiled libraries & finish cmake

target_link_libraries(main checker ${OPENGL_LIBRARIES})
set_target_properties(main PROPERTIES RUNTIME_OUTPUT_DIRECTORY ./)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment