Add a CGALExports.cmake file
Conflicts:
GraphicsView/src/CGAL_Qt5/CMakeLists.txt
Installation/cmake/modules/CGALConfig_binary.cmake.in
Installation/cmake/modules/CGALConfig_install.cmake.in
There was also a conceptual conflict in:
Installation/src/CMakeLists.txt
Change of Qt4or5 variables names.
Now: QT_VERSION => contains "QtX", with x 4 or 5 depending of the version wanted by the user.
USE_QT_VERSION => variable to force the version of Qt wanted. If this variable is set, the Qt Choice drop-down menu doesn't appear on CMake-gui.
QT_VERSION_USED => number of Qt version wanted (4 or 5).
QT4 => TRUE if Qt4 chosen.
QT5 => TRUE if Qt5 chosen.
Now, we have choice between "WITH_CGAL_Qt4" and "WITH_CGAL_Qt5" (like before because differents CGAL_QtX sources folders return).
Once the libCGALQt4 or libCGALQt5 configured, an cmake config variable "CGAL_QT_RECENT" allow us to know what is the more recent libCGAL_QtX configured.
Automaticaly,the demonstrations chose this recent version of Qt to build their project (even if a Qt version choice is proposed during CMake configuration)
During CMake configuration, when the user change the version of libCGAL_QtX, that change automaticaly the Qt version of find_package(QtX)
Now Qt4or5 is the thing allowing the choice between Qt4 and Qt5 (find_package(CGAL COMPONENT Qt4or5) or find_package(Qt4or5))
src/CGAL_Qt4/DemosMainWindow.cpp was the sole user of the macro
CGAL_SVN_REVISIONS, in CGAL's master branch. That macro is useless since
the switch to Git.
gcc has an option -isystem, that can replace -I. The documentation is:
-isystem dir
Search dir for header files, after all directories specified by -I but
before the standard system directories. Mark it as a system directory,
so that it gets the same special treatment as is applied to the
standard system directories. If dir begins with "=", then the "=" will
be replaced by the sysroot prefix; see --sysroot and -isysroot.
The "special treatment" means that gcc will not warn about constructions in
headers in directories pointed by -isystem instead of -I.
In the CGAL testsuite, there are a lot of warnings that comes from
third-party libraries (mostly from Boost, but also from Eigen).
This patch tells cmake to use -isystem with gcc, for all CGAL 3rd-party
directories.
The macro build_cgal_library(..) now defines the installation rules. That
should also fix a bug: now .dll files will be installed in
${CGAL_INSTALL_BIN_DIR}.
The function build_cgal_library defined in
Installation/src/CMakeLists.txt now handles a lot more than before, to
factorize between the various */src/*/CMakeLists.txt files used to
build CGAL libraries.
For example, the definition of mangled names is now factorized in that
function.
Installation/src/CMakeLists.txt also sets the output directories for
runtime, shared libraries, and static libraries. DLLs will be created
in bin/ instead of lib/.
That allows to build libCGAL_Qt4 and the Polyhedron demo with
-fvisibility-ms-compat on Linux.
That may allow to build CGAL_Qt4 as a DLL on Windows, one day.
We declare
cmake_minimum_required(VERSION 2.6.2)
but we also use
cmake_policy(VERSION 2.8.4)
to declare that our CMake scripts are OK with all the defaults of CMake policies
as of CMake-2.8.4. That shuts down the warnings of CMake-2.8.4.
That way, we no longer need any declaration of specific policies.
The documentation of CGAL says that the minimal version of CMake must be
CMake-2.6.2.
- change cmake_minimum_required to VERSION 2.6.2
- no longer any need for the policy CMP0003 (was for 2.4.x)
- no longer any need for CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS (was for 2.4)
release is a public release.
If the CGAL_Qt4 library is configured while there is an environment
variable CGAL_FAKE_PUBLIC_RELEASE, then the release version string is
stripped from its -I-.* part, so that is it equivalent to the version
string of the public release.
- Make get_dependency_version found the print_${LIB}_version.cpp, even
if the lib is compiled separately.
- Rename FindQt3.cmake to FindQt3-patched.cmake and Qt3Macros to
Qt3Macros-patched.
- Make CGAL-Qt3 compilable separately.
- Fix all commited CMakeLists.txt:
- use Qt3-patched and Qt3Macros-patched, and s/QT_/QT3_/
- add a comment about FindQt3-patched,
- wrap target creation with if(CGAL_FOUND AND QT3_FOUND)/else/endif
- Modified cgal_create_cmake_script
also contains :/cgal/help/about_CGAL.html
- Add include/CGAL/Qt/debug.h and src/CGALQt/debug.cpp, that will contain
debug tools/functions. For the moment, they just define:
void traverse_resources(const QString& name);
that must be used like that:
CGAL::Qt:traverse_resources(":/cgal"); // view CGAL resources
or
CGAL::Qt:traverse_resources(":"); // view all resources
and displays the resources tree on std::cerr.
- add the class CGAL::Qt::DemosMainWindow in libCGALQt4,
- compile moc generated files separately
In demo/
- new sub-directory demo/resources/ that contains, for now,
about_CGAL.html
- move the two triangulation demos from demo/GraphicsView to
demo/Triangulation_2 (to prepare the inclusion in CGAL internal release).
- For each demo, merge all .h and .cpp files. Each demo now has a ui
file, a cpp file and a qrc file (and a html file for the "About demo..."
menu entry).
- rename the demos to Delaunay_triangulation_2(.exe) and
Constrained_Delaunay_triangulation_2(.exe)
QGraphicsView*. It is now able to handle several graphics view at the same
time (just install several event filters).
New class CGAL::Qt::DemosMainWindow. That class has several protected
methods:
void setupStatusBar();
void addNavigation(QGraphicsView*);
void setupOptionsMenu(QMenu* menu = NULL);
void addAboutCGAL(QMenu* menu = NULL);
void addAboutDemo(QString htmlResourceName, QMenu* menu = NULL);
setupStatusBar() adds a label in the statusBar(), that is connected to the
navigation class, and shows the position of the mouse.
addNavigation(QGraphicsView* v) adds a navigation class to the view v.
setupOptionsMenu(QMenu* m = NULL) adds two options "Use OpenGL" and
"Use antialiasing" to the menu m. If m==0, a menu named "Options" is searched
for, or created if it does not exists.
addAboutCGAL(QMenu* m = NULL) adds an entry "About CGAL..." to the menu
m. If m==0, a "Help" menu is searched for or created.
addAboutDemo(QString htmlResourceName, QMenu* m = NULL) adds an entre
"About the demo...", to the menu m. If m==0, a "Help" menu is searched for
or created. If the entry is clicked, a popup dialog shows the content of
the resource/file whose name is in htmlResourceName.
Example:
addAboutDemo(":/cgal/help/about_triangulation.html")
QtPolylineInput.*
The need to split QtPolylineInput into a templated class and a
non-template base class exists, but there is not need to split the header
into two headers. QtPolylineInput_non_templated_base can be seen as an
auxiliary class of QtPolylineInput.
- Turn Point_2<K> into K::Point_2 in <CGAL/IO/QtConverter.h>, to avoid the
inclusion of <CGAL/Point_2.h>.
- Put most Qt Resource files into the CGALQt4 library, instead of linking
them into the demo.