-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Review CMake files, be a bit more diligent, set so versions
* Set project version (about time I got around to put some versioning in this here. Benefits com in a later bullet, helps prevent dll hell. * Stricter requirements: actually request specific versions. * Get rid of globbing. Make sure source files are captured exactly. Leverage `add_subdirectory` with child `CMakeLists.txt` to add the sources on a per directory basis. * Try a more modern CMake approach to the build generation with a heavy emphasis on targets. This means `include_directories` is gone. * Set target so versions. Can now safely distinguish between so's.
- Loading branch information
Showing
4 changed files
with
93 additions
and
21 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,29 +1,47 @@ | ||
project(JlCGAL) | ||
|
||
cmake_minimum_required(VERSION 3.1) | ||
set(CMAKE_MACOSX_RPATH 1) | ||
|
||
project(JlCGAL | ||
VERSION 0.15.0 | ||
LANGUAGES CXX) | ||
|
||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib") | ||
|
||
find_package(CGAL REQUIRED COMPONENTS Core) | ||
include(${CGAL_USE_FILE}) | ||
find_package(CGAL 5.0.3 CONFIG REQUIRED COMPONENTS Core) | ||
|
||
find_package(JlCxx REQUIRED) | ||
find_package(JlCxx 0.8 REQUIRED) | ||
get_target_property(JlCxx_location JlCxx::cxxwrap_julia LOCATION) | ||
get_filename_component(JlCxx_location ${JlCxx_location} DIRECTORY) | ||
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib;${JlCxx_location}") | ||
|
||
include_directories(include) | ||
file(GLOB_RECURSE JLCGAL_SOURCES src *.cpp) | ||
|
||
add_library(cgal_julia_exact SHARED ${JLCGAL_SOURCES}) | ||
add_library(cgal_julia_inexact SHARED ${JLCGAL_SOURCES}) | ||
target_compile_definitions(cgal_julia_exact PUBLIC JLCGAL_EXACT_CONSTRUCTIONS) | ||
target_link_libraries(cgal_julia_exact JlCxx::cxxwrap_julia ${CGAL_LIBRARIES}) | ||
target_link_libraries(cgal_julia_inexact JlCxx::cxxwrap_julia ${CGAL_LIBRARIES}) | ||
|
||
install(TARGETS | ||
cgal_julia_exact | ||
cgal_julia_inexact | ||
ARCHIVE DESTINATION lib | ||
LIBRARY DESTINATION lib | ||
RUNTIME DESTINATION bin) | ||
set(JLCGAL_TARGETS cgal_julia_exact cgal_julia_inexact) | ||
set(JLCGAL_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include) | ||
set(JLCGAL_HEADERS | ||
${JLCGAL_INCLUDE_DIR}/io.hpp | ||
${JLCGAL_INCLUDE_DIR}/global_kernel_functions.hpp | ||
${JLCGAL_INCLUDE_DIR}/kernel.hpp | ||
${JLCGAL_INCLUDE_DIR}/kernel_conversion.hpp | ||
${JLCGAL_INCLUDE_DIR}/polygon_2.hpp | ||
${JLCGAL_INCLUDE_DIR}/triangulation.hpp | ||
${JLCGAL_INCLUDE_DIR}/utils.hpp | ||
) | ||
add_subdirectory(src) # let each directory take care of the sources | ||
|
||
foreach(tgt IN ITEMS ${JLCGAL_TARGETS}) | ||
add_library(${tgt} SHARED ${JLCGAL_SOURCES} ${JLCGAL_HEADERS}) | ||
set_target_properties(${tgt} PROPERTIES | ||
VERSION ${PROJECT_VERSION} | ||
SOVERSION ${PROJECT_VERSION_MAJOR}) | ||
target_link_libraries(${tgt} | ||
JlCxx::cxxwrap_julia | ||
CGAL::CGAL | ||
CGAL::CGAL_Core) | ||
target_include_directories(${tgt} PRIVATE ${JLCGAL_INCLUDE_DIR}) | ||
target_sources(${tgt} PRIVATE ${JLCGAL_SOURCES}) | ||
endforeach(tgt) | ||
|
||
target_compile_definitions(cgal_julia_exact PRIVATE JLCGAL_EXACT_CONSTRUCTIONS) | ||
|
||
install(TARGETS ${JLCGAL_TARGETS} | ||
ARCHIVE DESTINATION lib | ||
LIBRARY DESTINATION lib | ||
RUNTIME DESTINATION bin) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
add_subdirectory(kernel) | ||
add_subdirectory(global_kernel_functions) | ||
|
||
set(JLCGAL_SOURCES ${JLCGAL_SOURCES} | ||
${CMAKE_CURRENT_LIST_DIR}/algebra.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/cgal_julia.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/convex_hull_2.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/global_kernel_functions.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/kernel.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/polygon_2.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/principal_component_analysis.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/straight_skeleton_2.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/triangulation_2.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/voronoi_diagram_2.cpp | ||
PARENT_SCOPE) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
set(JLCGAL_SOURCES ${JLCGAL_SOURCES} | ||
${CMAKE_CURRENT_LIST_DIR}/global_ck_functions.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/global_lk_functions.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/global_sk_functions.cpp | ||
|
||
PARENT_SCOPE) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
set(JLCGAL_SOURCES ${JLCGAL_SOURCES} | ||
${CMAKE_CURRENT_LIST_DIR}/aff_transformation_2.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/bbox_2.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/circle_2.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/circular_arc_2.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/direction_2.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/iso_rectangle_2.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/line_2.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/point_2.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/ray_2.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/segment_2.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/triangle_2.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/vector_2.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/weighted_point_2.cpp | ||
|
||
${CMAKE_CURRENT_LIST_DIR}/aff_transformation_3.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/bbox_3.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/circle_3.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/circular_arc_3.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/direction_3.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/iso_cuboid_3.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/line_3.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/plane_3.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/point_3.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/ray_3.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/segment_3.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/sphere_3.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/tetrahedron_3.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/triangle_3.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/vector_3.cpp | ||
${CMAKE_CURRENT_LIST_DIR}/weighted_point_3.cpp | ||
|
||
PARENT_SCOPE) |