Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error including CGAL in CMAKE file #8570

Open
DarkSun812 opened this issue Oct 23, 2024 · 0 comments
Open

Error including CGAL in CMAKE file #8570

DarkSun812 opened this issue Oct 23, 2024 · 0 comments

Comments

@DarkSun812
Copy link

I have tried to add CGAL in a project that I have in Qt6 but if I include CGAL I get an error that according to my research, is because it does not find QObject, but I am also including Core which is supposed to be where QObject goes.

CMakeLists.txt file

cmake_minimum_required(VERSION 3.5)

project(cloud_analizer VERSION 0.1 LANGUAGES CXX)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets Core Gui Concurrent Sql WebSockets WebChannel WebEngineWidgets WebView)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets Core Gui Concurrent Sql WebSockets WebChannel WebEngineWidgets WebView)

set(CGAL_DIR "C:/dev/CGAL-6.0/lib/cmake/CGAL")
find_package(CGAL REQUIRED COMPONENTS Qt6 Core)

include_directories("C:/Program Files/MySql/MySQL Server 8.0/include")
include_directories("C:/Program Files/boost/boost_1_83_0")

link_directories("C:/Program Files/MySql/MySQL Server 8.0/lib")
link_directories("C:/Program Files/boost/boost_1_83_0/lib")


set(PROJECT_SOURCES
        main.cpp
        mainwindow.cpp
        mainwindow.h
        mainwindow.ui
)

if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
    qt_add_executable(cloud_analizer
        MANUAL_FINALIZATION
        ${PROJECT_SOURCES}
        api.h api.cpp
        funciones_standar.h funciones_standar.cpp
        cloudfunctions.h cloudfunctions.cpp
        cloudserver.h cloudserver.cpp
    )
# Define target properties for Android with Qt 6 as:
#    set_property(TARGET cloud_analizer APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
#                 ${CMAKE_CURRENT_SOURCE_DIR}/android)
# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
else()
    if(ANDROID)
        add_library(cloud_analizer SHARED
            ${PROJECT_SOURCES}
        )
# Define properties for Android with Qt 5 after find_package() calls as:
#    set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
    else()
        add_executable(cloud_analizer
            ${PROJECT_SOURCES}
        )
    endif()
endif()

if(CGAL_Qt6_FOUND)
  target_link_libraries(cloud_analizer PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt6::WebView Qt6::Core Qt6::Gui Qt6::Concurrent Qt6::Sql Qt6::WebSockets Qt6::WebChannel Qt6::WebEngineWidgets mysqlclient)
  target_link_libraries(cloud_analizer PRIVATE CGAL::CGAL_Basic_viewer)
else()
  target_link_libraries(cloud_analizer PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt6::WebView Qt6::Core Qt6::Gui Qt6::Concurrent Qt6::Sql Qt6::WebSockets Qt6::WebChannel Qt6::WebEngineWidgets mysqlclient)
  message(STATUS "NOTICE: Several examples require Qt6 and will not be compiled.")
endif()
# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.
# If you are developing for iOS or macOS you should consider setting an
# explicit, fixed bundle identifier manually though.
if(${QT_VERSION} VERSION_LESS 6.1.0)
  set(BUNDLE_ID_OPTION MACOSX_BUNDLE_GUI_IDENTIFIER com.example.cloud_analizer)
endif()
set_target_properties(cloud_analizer PROPERTIES
    ${BUNDLE_ID_OPTION}
    MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
    MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
    MACOSX_BUNDLE TRUE
    WIN32_EXECUTABLE TRUE
)

include(GNUInstallDirs)
install(TARGETS cloud_analizer
    BUNDLE DESTINATION .
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)


if(QT_VERSION_MAJOR EQUAL 6)
    qt_finalize_executable(cloud_analizer)
endif()

By adding the lines

set(CGAL_DIR "C:/dev/CGAL-6.0/lib/cmake/CGAL")
find_package(CGAL REQUIRED COMPONENTS Qt6 Core)

mainwindows.h File

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QObject>
#include <QtWebSockets/QtWebSockets>
#include "cloudfunctions.h"

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class CloudFunctions;

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:

    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
private slots:
    void testSlot();


private:
    Ui::MainWindow *ui;
    CloudFunctions *mCloud;

};

class DataObject : public QObject
{
    Q_OBJECT
public:

    Q_INVOKABLE QStringList getData() const {

        return QStringList() <<"value1";
    }
};
#endif // MAINWINDOW_H

From these two lines, you start to ignore private slots: and many other lines.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant