Created
December 19, 2019 07:17
-
-
Save antonxo/81edaf47bbf19717078a2b0168820a8d to your computer and use it in GitHub Desktop.
CMakeLists.txt example (compiles libraries on the go)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
cmake_minimum_required(VERSION 3.6) | |
project(RT) | |
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror -Wextra -DUNITY_INCLUDE_CONFIG_H") | |
# project sources | |
set(PARSER_SOURCES | |
inc/rt_prsr.h | |
src/parser/rt_prsr_peek.c | |
src/parser/rt_prsr_node.c | |
src/parser/rt_prsr_parse.c | |
src/parser/rt_prsr_alias.c | |
src/parser/rt_prsr_scalar.c | |
src/parser/rt_prsr_expect.c | |
src/parser/rt_prsr_anchor.c | |
src/parser/rt_prsr_create.c | |
src/parser/rt_prsr_mapping.c | |
src/parser/rt_prsr_helpers.c | |
src/parser/rt_prsr_destroy.c | |
src/parser/rt_prsr_document.c | |
src/parser/rt_prsr_sequence.c | |
src/parser/rt_prsr_set_file.c) | |
set(CONSTRUCTOR_SOURCES | |
inc/rt_ctor.h | |
src/constructor/rt_ctor_init.c | |
src/constructor/rt_ctor_disks.c | |
src/constructor/rt_ctor_cones.c | |
src/constructor/rt_ctor_camera.c | |
src/constructor/rt_ctor_planes.c | |
src/constructor/rt_ctor_helpers.c | |
src/constructor/rt_ctor_spheres.c | |
src/constructor/rt_ctor_destruct.c | |
src/constructor/rt_ctor_cylinders.c | |
src/constructor/rt_ctor_materials.c | |
src/constructor/rt_ctor_lim_cones.c | |
src/constructor/rt_ctor_primitives.c | |
src/constructor/rt_ctor_construct.c | |
src/constructor/rt_ctor_point_lights.c | |
src/constructor/rt_ctor_lim_cylinders.c | |
src/constructor/rt_ctor_ambient_light.c | |
src/constructor/rt_ctor_background_color.c) | |
set(CORE_SOURCES | |
src/camera_move.c | |
src/camera_rotate.c | |
src/find.c | |
src/evaluate_found.c | |
src/colors.c | |
src/shadow.c | |
src/intersection1.c | |
src/intersection2.c | |
src/intersection3.c | |
src/intersection_support1.c | |
src/intersection_support2.c | |
src/camera_rotate.c | |
src/rays.c | |
src/reflection_refraction.c | |
src/process_ray_dielectric.c | |
src/rendering.c | |
src/handlers.c | |
src/stack.c) | |
set(NET_SOURCES) | |
set(SOURCE_FILES | |
inc/rt.h | |
src/main.c) | |
set(SOURCE_FILES ${SOURCE_FILES} ${PARSER_SOURCES}) | |
set(SOURCE_FILES ${SOURCE_FILES} ${CONSTRUCTOR_SOURCES}) | |
set(SOURCE_FILES ${SOURCE_FILES} ${CORE_SOURCES}) | |
set(SOURCE_FILES ${SOURCE_FILES} ${NET_SOURCES}) | |
# libft sources | |
AUX_SOURCE_DIRECTORY(lib/libft LIBFT_SOURCE_FILES) | |
AUX_SOURCE_DIRECTORY(lib/libft/includes LIBFT_SOURCE_FILES) | |
# mathx sources | |
AUX_SOURCE_DIRECTORY(./lib/math_extended/ MATHX_SOURCES) | |
# tests sources | |
set(TEST_SOURCE_FILES) | |
AUX_SOURCE_DIRECTORY(t TEST_SOURCE_FILES) | |
AUX_SOURCE_DIRECTORY(lib/unity/src TEST_SOURCE_FILES) | |
AUX_SOURCE_DIRECTORY(lib/unity/extras/fixture/src TEST_SOURCE_FILES) | |
set(TEST_SOURCE_FILES ${TEST_SOURCE_FILES} ${PARSER_SOURCES}) | |
set(TEST_SOURCE_FILES ${TEST_SOURCE_FILES} ${CONSTRUCTOR_SOURCES}) | |
set(TEST_SOURCE_FILES ${TEST_SOURCE_FILES} ${CORE_SOURCES}) | |
set(TEST_SOURCE_FILES ${TEST_SOURCE_FILES} ${NET_SOURCES}) | |
# SDL2 constants | |
if (APPLE) | |
find_package(PkgConfig REQUIRED) | |
pkg_check_modules(SDL2 REQUIRED sdl2) | |
pkg_check_modules(SDL2_TTF REQUIRED sdl2_ttf) | |
elseif(UNIX AND NOT APPLE) | |
find_package(SDL2 REQUIRED) | |
find_package(SDL_ttf REQUIRED) | |
endif () | |
include_directories( | |
inc | |
lib/libft/includes | |
lib/math_extended | |
${SDL2_INCLUDE_DIRS} | |
${SDL2_TTF_INCLUDE_DIRS} | |
lib/unity/src/ | |
lib/unity/extras/fixture/src | |
lib/libyaml/build/include) # where to find headers | |
link_directories(lib/libyaml/build/lib) | |
add_library(mathx STATIC ${MATHX_SOURCES}) | |
add_library(ft STATIC ${LIBFT_SOURCE_FILES}) # build static libft.a lib | |
add_executable(RT ${SOURCE_FILES}) # compilation | |
add_executable(RT_TEST ${TEST_SOURCE_FILES}) # compilation of test executable | |
if (APPLE) | |
target_link_libraries(RT ${SDL2_LDFLAGS} ${SDL2_TTF_LDFLAGS} ft mathx m pthread yaml) # linkage of main executable | |
target_link_libraries(RT_TEST ${SDL2_LDFLAGS} ${SDL2_TTF_LDFLAGS} ft mathx m pthread yaml) # linkage of test executable | |
elseif(UNIX AND NOT APPLE) | |
target_link_libraries(RT ${SDL2_LIBRARIES} ft mathx m pthread yaml SDL2_ttf) # linkage of main executable | |
target_link_libraries(RT_TEST ${SDL2_LIBRARIES} ft mathx m pthread yaml SDL2_ttf) # linkage of test executable | |
endif () |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment