cmake hassle
This commit is contained in:
parent
15127c5122
commit
407e4fb474
10 changed files with 115 additions and 110 deletions
|
|
@ -8,13 +8,14 @@ set(CMAKE_CXX_STANDARD 20)
|
|||
|
||||
project(ModulesRoot)
|
||||
|
||||
include(CMakeOptions.txt)
|
||||
include(CMakeOptions.cmake)
|
||||
include(Externals/CMakeExternals.cmake)
|
||||
|
||||
add_subdirectory(Modules)
|
||||
add_subdirectory(Containers)
|
||||
add_subdirectory(Math)
|
||||
# add_subdirectory(Language)
|
||||
add_subdirectory(Externals)
|
||||
# add_subdirectory(Externals)
|
||||
add_subdirectory(Connection)
|
||||
add_subdirectory(Graphics)
|
||||
add_subdirectory(DataAnalysis)
|
||||
|
|
|
|||
44
Externals/CMakeExternals.cmake
vendored
Normal file
44
Externals/CMakeExternals.cmake
vendored
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
# find_package(ALSA REQUIRED)
|
||||
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
message("Configuring for windows...")
|
||||
message("Libraries path is - ${WINDOWS_LIBRARIES}")
|
||||
set(CMAKE_PREFIX_PATH "${WINDOWS_LIBRARIES}")
|
||||
endif()
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/Externals")
|
||||
|
||||
set(IMGUI_SRC_DIR "${CMAKE_SOURCE_DIR}/Externals/imgui")
|
||||
|
||||
set(OpenGL_GL_PREFERENCE LEGACY)
|
||||
#set(OIDN_DEVICE_CPU ON)
|
||||
#set(OIDN_STATIC_LIB ON)
|
||||
#add_subdirectory(oidn)
|
||||
|
||||
find_package(OpenGL REQUIRED)
|
||||
find_package(GLEW REQUIRED)
|
||||
find_package(PortAudio REQUIRED)
|
||||
find_package(OpenImageDenoise REQUIRED)
|
||||
find_package(ImGui REQUIRED)
|
||||
find_package(Lua REQUIRED)
|
||||
find_package(glfw3 REQUIRED)
|
||||
|
||||
#add_subdirectory(unittest-cpp)
|
||||
add_subdirectory(Externals/lalr)
|
||||
target_compile_options(UnitTest++ PUBLIC -Wno-error)
|
||||
|
||||
|
||||
#add_subdirectory(Externals/glfw)
|
||||
|
||||
|
||||
project(Nanovg)
|
||||
set(${PROJECT_NAME}_SOURCES
|
||||
Externals/nanovg/src/nanovg.c
|
||||
)
|
||||
|
||||
add_library(${PROJECT_NAME} STATIC ${${PROJECT_NAME}_SOURCES})
|
||||
target_include_directories(${PROJECT_NAME} PUBLIC ./Externals/nanovg/src/ ./Externals/nanovg/obsolete/)
|
||||
|
||||
project(ImageIO)
|
||||
add_library(${PROJECT_NAME} INTERFACE)
|
||||
target_include_directories(${PROJECT_NAME} INTERFACE ./Externals/imageIO/)
|
||||
94
Externals/CMakeLists.txt
vendored
94
Externals/CMakeLists.txt
vendored
|
|
@ -1,94 +0,0 @@
|
|||
# find_package(ALSA REQUIRED)
|
||||
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
message("Configuring for windows...")
|
||||
message("Libraries path is - ${WINDOWS_LIBRARIES}")
|
||||
|
||||
set(CMAKE_PREFIX_PATH "${WINDOWS_LIBRARIES}/glew-2.1.0")
|
||||
find_package(GLEW REQUIRED)
|
||||
set(GLEW_LIB ${GLEW_STATIC_LIBRARY_RELEASE} opengl32.lib PARENT_SCOPE)
|
||||
|
||||
# Your relative paths
|
||||
set(RELATIVE_INCLUDE_DIR "${WINDOWS_LIBRARIES}/portaudio/include")
|
||||
set(RELATIVE_LIB "${WINDOWS_LIBRARIES}/portaudio_build/Debug/portaudio.lib")
|
||||
|
||||
# Convert to absolute paths
|
||||
get_filename_component(ABSOLUTE_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${RELATIVE_INCLUDE_DIR}" ABSOLUTE)
|
||||
get_filename_component(ABSOLUTE_LIB "${CMAKE_CURRENT_SOURCE_DIR}/${RELATIVE_LIB}" ABSOLUTE)
|
||||
|
||||
# Set absolute paths with respect to the parent scope
|
||||
set(PORTAUDIO_INCLUDE_DIR "${ABSOLUTE_INCLUDE_DIR}" PARENT_SCOPE)
|
||||
set(PORTAUDIO_LIB "${ABSOLUTE_LIB}" PARENT_SCOPE)
|
||||
else()
|
||||
find_package(GLEW REQUIRED)
|
||||
set(GLEW_LIB ${GLEW_LIBRARIES} GL PARENT_SCOPE)
|
||||
|
||||
set(PORTAUDIO_LIB portaudio PARENT_SCOPE)
|
||||
endif()
|
||||
|
||||
#add_subdirectory(glew/build/cmake/)
|
||||
#target_compile_definitions(glew_s PUBLIC GLEW_NO_GLU)
|
||||
|
||||
#add_subdirectory(unittest-cpp)
|
||||
add_subdirectory(lalr)
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
else()
|
||||
target_compile_options(UnitTest++ PUBLIC -Wno-error)
|
||||
endif()
|
||||
|
||||
|
||||
add_subdirectory(glfw)
|
||||
|
||||
project(Imgui)
|
||||
set(${PROJECT_NAME}_SOURCES
|
||||
imgui/imgui.cpp
|
||||
imgui/imgui_draw.cpp
|
||||
imgui/imgui_tables.cpp
|
||||
imgui/imgui_widgets.cpp
|
||||
imgui/imgui_demo.cpp
|
||||
|
||||
imgui/backends/imgui_impl_glfw.cpp
|
||||
imgui/backends/imgui_impl_opengl3.cpp
|
||||
)
|
||||
|
||||
add_library(${PROJECT_NAME} STATIC ${${PROJECT_NAME}_SOURCES})
|
||||
include_directories(${PROJECT_NAME} ./glfw/include)
|
||||
target_include_directories(${PROJECT_NAME} PUBLIC ./imgui/ ./imgui/backends/)
|
||||
|
||||
project(Nanovg)
|
||||
set(${PROJECT_NAME}_SOURCES
|
||||
nanovg/src/nanovg.c
|
||||
)
|
||||
|
||||
add_library(${PROJECT_NAME} STATIC ${${PROJECT_NAME}_SOURCES})
|
||||
target_include_directories(${PROJECT_NAME} PUBLIC ./nanovg/src/ ./nanovg/obsolete/)
|
||||
|
||||
project(Lua)
|
||||
|
||||
# Add the Lua source files
|
||||
#file(GLOB ${PROJECT_NAME}_SOURCES "./lua/luaone.c")
|
||||
# list(FILTER ${PROJECT_NAME}_SOURCES EXCLUDE REGEX "./lua/lua.c$")
|
||||
|
||||
# Create the Lua library
|
||||
add_library(${PROJECT_NAME} STATIC "lua/onelua.c")
|
||||
|
||||
target_compile_definitions(${PROJECT_NAME} PUBLIC MAKE_LIB)
|
||||
|
||||
# Include directories for Lua headers
|
||||
target_include_directories(${PROJECT_NAME} PUBLIC "./lua")
|
||||
|
||||
# Set compilation options, e.g., for compilation with C99
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||
C_STANDARD 99
|
||||
C_STANDARD_REQUIRED ON
|
||||
)
|
||||
|
||||
project(ImageIO)
|
||||
add_library(${PROJECT_NAME} INTERFACE)
|
||||
target_include_directories(${PROJECT_NAME} INTERFACE ./imageIO/)
|
||||
|
||||
|
||||
#set(OIDN_DEVICE_CPU ON)
|
||||
#set(OIDN_STATIC_LIB ON)
|
||||
#add_subdirectory(oidn)
|
||||
find_package(OpenImageDenoise REQUIRED)
|
||||
25
Externals/FindImGui.cmake
vendored
Normal file
25
Externals/FindImGui.cmake
vendored
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
project(ImGui)
|
||||
|
||||
|
||||
set(${PROJECT_NAME}_SOURCES
|
||||
${IMGUI_SRC_DIR}/imgui.cpp
|
||||
${IMGUI_SRC_DIR}/imgui_draw.cpp
|
||||
${IMGUI_SRC_DIR}/imgui_tables.cpp
|
||||
${IMGUI_SRC_DIR}/imgui_widgets.cpp
|
||||
${IMGUI_SRC_DIR}/imgui_demo.cpp
|
||||
|
||||
${IMGUI_SRC_DIR}/backends/imgui_impl_glfw.cpp
|
||||
${IMGUI_SRC_DIR}/backends/imgui_impl_opengl3.cpp
|
||||
)
|
||||
|
||||
set(${PROJECT_NAME}_INCLUDES
|
||||
${IMGUI_SRC_DIR}
|
||||
${IMGUI_SRC_DIR}/backends/
|
||||
)
|
||||
|
||||
add_library(${PROJECT_NAME} STATIC ${${PROJECT_NAME}_SOURCES})
|
||||
target_include_directories(${PROJECT_NAME} PUBLIC ${${PROJECT_NAME}_INCLUDES})
|
||||
|
||||
#include_directories(${PROJECT_NAME} ././glfw/include)
|
||||
|
||||
add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
|
||||
35
Externals/FindPortAudio.cmake
vendored
Normal file
35
Externals/FindPortAudio.cmake
vendored
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
# - Find PortAudio includes and libraries
|
||||
#
|
||||
# PORTAUDIO_FOUND - True if PORTAUDIO_INCLUDE_DIR & PORTAUDIO_LIBRARY
|
||||
# are found
|
||||
# PORTAUDIO_LIBRARIES - Set when PORTAUDIO_LIBRARY is found
|
||||
# PORTAUDIO_INCLUDE_DIRS - Set when PORTAUDIO_INCLUDE_DIR is found
|
||||
#
|
||||
# PORTAUDIO_INCLUDE_DIR - where to find portaudio.h, etc.
|
||||
# PORTAUDIO_LIBRARY - the portaudio library
|
||||
#
|
||||
|
||||
find_path(PORTAUDIO_INCLUDE_DIR
|
||||
NAMES portaudio.h
|
||||
DOC "The PortAudio include directory"
|
||||
)
|
||||
|
||||
find_library(PORTAUDIO_LIBRARY
|
||||
NAMES portaudio
|
||||
DOC "The PortAudio library"
|
||||
)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(PortAudio
|
||||
REQUIRED_VARS PORTAUDIO_LIBRARY PORTAUDIO_INCLUDE_DIR
|
||||
)
|
||||
|
||||
# Create an imported target for PortAudio
|
||||
add_library(PortAudio::PortAudio UNKNOWN IMPORTED)
|
||||
set_target_properties(PortAudio::PortAudio PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${PORTAUDIO_INCLUDE_DIR}"
|
||||
IMPORTED_LOCATION "${PORTAUDIO_LIBRARY}"
|
||||
)
|
||||
|
||||
# Provide the information to the user
|
||||
mark_as_advanced(PORTAUDIO_INCLUDE_DIR PORTAUDIO_LIBRARY)
|
||||
1
Externals/glfw
vendored
1
Externals/glfw
vendored
|
|
@ -1 +0,0 @@
|
|||
Subproject commit b35641f4a3c62aa86a0b3c983d163bc0fe36026d
|
||||
1
Externals/lua
vendored
1
Externals/lua
vendored
|
|
@ -1 +0,0 @@
|
|||
Subproject commit 6baee9ef9d5657ab582c8a4b9f885ec58ed502d0
|
||||
|
|
@ -1,23 +1,19 @@
|
|||
project(Graphics)
|
||||
|
||||
### ---------------------- Externals --------------------- ###
|
||||
set(BINDINGS_INCLUDE ../Externals/glfw/include ${GLEW_INCLUDE_DIR})
|
||||
set(BINDINGS_LIBS glfw Imgui Nanovg ${GLEW_LIB})
|
||||
set(EXTERNAL_TARGETS glfw GLEW::glew OpenGL::GL ImGui::ImGui Nanovg)
|
||||
|
||||
### ---------------------- Static Library --------------------- ###
|
||||
file(GLOB SOURCES "./private/*.cpp")
|
||||
file(GLOB HEADERS "./public/*.hpp")
|
||||
add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS})
|
||||
target_include_directories(${PROJECT_NAME} PUBLIC ./public/)
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE ${BINDINGS_INCLUDE})
|
||||
target_link_libraries(${PROJECT_NAME} PUBLIC Math)
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE ${BINDINGS_LIBS})
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE ${EXTERNAL_TARGETS})
|
||||
|
||||
### -------------------------- Examples -------------------------- ###
|
||||
add_executable(Example${PROJECT_NAME} ./examples/Example.cpp)
|
||||
target_link_libraries(Example${PROJECT_NAME} ${PROJECT_NAME} ${BINDINGS_LIBS})
|
||||
target_include_directories(Example${PROJECT_NAME} PRIVATE ${BINDINGS_INCLUDE})
|
||||
target_link_libraries(Example${PROJECT_NAME} ${PROJECT_NAME} ${EXTERNAL_TARGETS})
|
||||
|
||||
|
||||
file(COPY "examples/Font.ttf" DESTINATION "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/")
|
||||
|
||||
file(COPY "examples/Font.ttf" DESTINATION "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/")
|
||||
|
|
@ -1,8 +1,7 @@
|
|||
project(LibraryViewer)
|
||||
|
||||
### ---------------------- Externals --------------------- ###
|
||||
set(BINDINGS_INCLUDE ../Externals/glfw/include ${GLEW_INCLUDE_DIR} ${PORTAUDIO_INCLUDE_DIR})
|
||||
set(BINDINGS_LIBS glfw Imgui ${GLEW_LIB} ${ALSA_LIBRARY} ${PORTAUDIO_LIB})
|
||||
set(EXTERNAL_TARGETS glfw Imgui GLEW::glew OpenGL::GL PortAudio::PortAudio)
|
||||
|
||||
### ---------------------- Static Library --------------------- ###
|
||||
file(GLOB SOURCES "./private/*.cpp" "./private/*/*.cpp")
|
||||
|
|
@ -10,9 +9,10 @@ file(GLOB HEADERS "./public/*.hpp" "./public/*/*.hpp" "./applications/*.hpp")
|
|||
|
||||
add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS})
|
||||
|
||||
target_include_directories(${PROJECT_NAME} PUBLIC ./public/ ${BINDINGS_INCLUDE} ./ext/)
|
||||
target_include_directories(${PROJECT_NAME} PUBLIC ./public/ ./ext/)
|
||||
|
||||
target_link_libraries(${PROJECT_NAME} PUBLIC Graphics Connection Widgets)
|
||||
target_link_libraries(${PROJECT_NAME} PUBLIC ${BINDINGS_LIBS})
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE ${EXTERNAL_TARGETS})
|
||||
|
||||
file(COPY "library" DESTINATION "${CMAKE_BINARY_DIR}/${PROJECT_NAME}")
|
||||
file(COPY "applications/Font.ttf" DESTINATION "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue