mirror of
https://github.com/zeldaret/st
synced 2026-06-18 15:35:30 -04:00
01a4804485
* Add CMakeList to create compilation database with minimal instructions * Tidy up CMakeLists and add documentation * Rename project in CMakeLists to generalize * Add details to the LSP doc * Add editor config files to `.gitignore`
47 lines
1.4 KiB
CMake
47 lines
1.4 KiB
CMake
# See CONTRIBUTING.md for explanations
|
|
# Adapted from https://gist.github.com/Strus/042a92a00070a943053006bf46912ae9
|
|
# Build the compilation database with `cmake -S . -G "Unix Makefiles" -B cmake`
|
|
# The database is exported in the cmake/ directory
|
|
|
|
cmake_minimum_required(VERSION 3.8)
|
|
project(st_decomp)
|
|
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
# Change path from /src if needed, or add more directories
|
|
file(GLOB_RECURSE sources
|
|
"${CMAKE_SOURCE_DIR}/src/*.c"
|
|
"${CMAKE_SOURCE_DIR}/src/*.cpp"
|
|
)
|
|
|
|
# Add precompiler definitions like that:
|
|
# add_definitions(-DSOME_DEFINITION)
|
|
|
|
add_executable(st_decomp ${sources})
|
|
|
|
# Add include directories
|
|
target_include_directories(st_decomp PUBLIC "${CMAKE_SOURCE_DIR}/include")
|
|
|
|
# Add lib directories
|
|
file(GLOB lib_paths
|
|
"${CMAKE_SOURCE_DIR}/libs/*"
|
|
)
|
|
|
|
foreach(path IN LISTS lib_paths)
|
|
|
|
# Retrieve the name of the lib
|
|
string(REGEX MATCH "([a-z]+)$" lib_name ${path}) # last word of the path is the name
|
|
|
|
# Add the library as an interface only since we don't intend on actually compiling anyway
|
|
add_library(${lib_name} INTERFACE)
|
|
set_target_properties(${lib_name} PROPERTIES
|
|
INTERFACE_INCLUDE_DIRECTORIES "${path}/include"
|
|
)
|
|
|
|
target_link_libraries(st_decomp ${lib_name}) # also adds the required include path
|
|
|
|
endforeach()
|
|
|
|
# If you have precompiled headers you can add them like this
|
|
# trget_precompiled_headers(st_decomp PRIVATE "${CMAKE_SOURCE_DIR}/src/pch.h")
|