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 " \n") foreach(ICON_FILE IN LISTS ICON_FILES) get_filename_component(ICON_ALIAS ${ICON_FILE} NAME) string(APPEND QRC_CONTENT " ${ICON_FILE}\n") endforeach() string(APPEND QRC_CONTENT " \n") file(GLOB SHADER_FILES "src/shaders/*") string(APPEND QRC_CONTENT " \n") foreach(SHADER_FILE IN LISTS SHADER_FILES) get_filename_component(SHADER_ALIAS ${SHADER_FILE} NAME) string(APPEND QRC_CONTENT " ${SHADER_FILE}\n") endforeach() string(APPEND QRC_CONTENT " \n") file(WRITE ${GENERATED_QRC_FILE} "\n${QRC_CONTENT}\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 )