Files
unnamed-cad-software/CMakeLists.txt
2026-02-18 13:07:49 -07:00

71 lines
2.2 KiB
CMake

cmake_minimum_required(VERSION 3.16)
project(OpenCAD)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
find_package(Qt6 COMPONENTS Widgets OpenGLWidgets Svg REQUIRED)
find_package(TBB REQUIRED)
find_package(OpenCASCADE REQUIRED
COMPONENTS
FoundationClasses
ModelingData
ModelingAlgorithms
Visualization
)
# Workaround for Debian's OpenCASCADE package not setting INCLUDE_DIRS correctly
if(NOT OpenCASCADE_INCLUDE_DIRS)
set(OpenCASCADE_INCLUDE_DIRS "/usr/include/opencascade")
message(STATUS "OpenCASCADE_INCLUDE_DIRS was not set. Forcing to /usr/include/opencascade")
endif()
message(STATUS "OpenCASCADE_INCLUDE_DIRS: ${OpenCASCADE_INCLUDE_DIRS}")
message(STATUS "OpenCASCADE_LIBRARIES: ${OpenCASCADE_LIBRARIES}")
# Automatically find resource files and generate resources.qrc
set(GENERATED_QRC_FILE "${CMAKE_CURRENT_BINARY_DIR}/resources.qrc")
set(QRC_CONTENT "")
file(GLOB ICON_FILES "icons/*.svg")
string(APPEND QRC_CONTENT " <qresource prefix=\"/icons\">\n")
foreach(ICON_FILE IN LISTS ICON_FILES)
get_filename_component(ICON_ALIAS ${ICON_FILE} NAME)
string(APPEND QRC_CONTENT " <file alias=\"${ICON_ALIAS}\">${ICON_FILE}</file>\n")
endforeach()
string(APPEND QRC_CONTENT " </qresource>\n")
file(GLOB SHADER_FILES "src/shaders/*")
string(APPEND QRC_CONTENT " <qresource prefix=\"/shaders\">\n")
foreach(SHADER_FILE IN LISTS SHADER_FILES)
get_filename_component(SHADER_ALIAS ${SHADER_FILE} NAME)
string(APPEND QRC_CONTENT " <file alias=\"${SHADER_ALIAS}\">${SHADER_FILE}</file>\n")
endforeach()
string(APPEND QRC_CONTENT " </qresource>\n")
file(WRITE ${GENERATED_QRC_FILE} "<RCC>\n${QRC_CONTENT}</RCC>\n")
file(GLOB SOURCES "src/*.cpp")
add_executable(OpenCAD
${SOURCES}
${GENERATED_QRC_FILE}
)
target_include_directories(OpenCAD SYSTEM PRIVATE ${OpenCASCADE_INCLUDE_DIRS})
target_link_libraries(OpenCAD PRIVATE
Qt6::Widgets
Qt6::OpenGLWidgets
Qt6::Svg
${OpenCASCADE_FoundationClasses_LIBRARIES}
${OpenCASCADE_ModelingData_LIBRARIES}
${OpenCASCADE_ModelingAlgorithms_LIBRARIES}
${OpenCASCADE_Visualization_LIBRARIES}
TBB::tbb
)