Closed mrtgenet closed 2 years ago
Here is the CMakeOutput.log:
In my CMakeLists.txt, I have the following lines for LASlib:
add_definitions(-DCGAL_LINKED_WITH_LASLIB)
[...]
find_package(LASLIB REQUIRED) if(LASLIB_FOUND AND NOT TARGET CGAL::LASLIB_support) add_library(CGAL::LASLIB_support INTERFACE IMPORTED) set_target_properties(CGAL::LASLIB_support PROPERTIES INTERFACE_COMPILE_DEFINITIONS "CGAL_LINKED_WITH_LASLIB" INTERFACE_INCLUDE_DIRECTORIES "${LASLIB_INCLUDE_DIR};${LASZIP_INCLUDE_DIR}" INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${LASLIB_INCLUDE_DIR};${LASZIP_INCLUDE_DIR}" INTERFACE_LINK_LIBRARIES "${LASLIB_LIBRARIES}") endif()
Then, what are the values of those variables LASLIB_INCLUDE_DIR
, LASZIP_INCLUDE_DIR
, and LASLIB_LIBRARIES
? Do you have LASLIB_FOUND
equal to TRUE
, by the way?
You can add commands like message(STATUS "LASLIB_FOUND: ${LASLIB_FOUND}")
, and so on, to find out.
Here is the output:
-- LASLIB_FOUND: TRUE -- LASLIB_INCLUDE_DIR: /usr/local/include/LASlib -- LASZIP_INCLUDE_DIR: /usr/local/include/LASzip -- LASLIB_LIBRARIES: /usr/local/lib/liblas.so
The paths are the actual correct places where my libraries are installed, notably I have /usr/local/include/LASlib/lasreader_las.hpp
Everything seems in order. Would you mind sharing the full CMakeLists.txt
. Maybe I can point out what got wrong.
Indeed, that is why I feel kind of lost.
Below is the full CMakeLists.txt:
project(My_project)
cmake_minimum_required(VERSION 3.1...3.23)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
if(NOT POLICY CMP0070 AND POLICY CMP0053)
# Only set CMP0053 to OLD with CMake<3.10, otherwise there is a warning.
cmake_policy(SET CMP0053 OLD)
endif()
if(POLICY CMP0071)
cmake_policy(SET CMP0071 NEW)
endif()
# Find includes in corresponding build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)
# Instruct CMake to run moc automatically when needed.
set(CMAKE_AUTOMOC ON)
################################################################################
add_definitions("-Wall -Wextra")
set(CMAKE_CXX_STANDARD 17)
add_definitions("-g") # for profilling with vtune
add_link_options("-g")
add_definitions("-DCGAL_DATA_DIR=\"${CMAKE_SOURCE_DIR}/../data/\"")
add_definitions(-DCGAL_LINKED_WITH_LASLIB)
################################################################################
find_package(CGAL REQUIRED COMPONENTS Qt5)
find_package(Qt5 REQUIRED COMPONENTS Script OpenGL Svg)
find_package(Boost REQUIRED)
find_package(Eigen3 3.1.0) #(requires 3.1.0 or greater)
find_package(LASLIB REQUIRED)
if(LASLIB_FOUND AND NOT TARGET CGAL::LASLIB_support)
add_library(CGAL::LASLIB_support INTERFACE IMPORTED)
set_target_properties(CGAL::LASLIB_support PROPERTIES
INTERFACE_COMPILE_DEFINITIONS "CGAL_LINKED_WITH_LASLIB"
INTERFACE_INCLUDE_DIRECTORIES "${LASLIB_INCLUDE_DIR};${LASZIP_INCLUDE_DIR}"
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${LASLIB_INCLUDE_DIR};${LASZIP_INCLUDE_DIR}"
INTERFACE_LINK_LIBRARIES "${LASLIB_LIBRARIES}")
endif()
message(STATUS "LASLIB_FOUND: ${LASLIB_FOUND}")
message(STATUS "LASLIB_INCLUDE_DIR: ${LASLIB_INCLUDE_DIR}")
message(STATUS "LASZIP_INCLUDE_DIR: ${LASZIP_INCLUDE_DIR}")
message(STATUS "LASLIB_LIBRARIES: ${LASLIB_LIBRARIES}")
include(CGAL_Eigen3_support)
add_definitions(-DCGAL_USE_BASIC_VIEWER -DQT_NO_KEYWORDS)
################################################################################
find_package(ASSIMP)
if (ASSIMP_FOUND)
ADD_DEFINITIONS(-DWITH_ASSIMP)
endif (ASSIMP_FOUND)
################################################################################
include_directories(tools)
include_directories(BEFORE SYSTEM ${CMAKE_SOURCE_DIR})
################################################################################
# ui file, created wih Qt Designer
qt5_wrap_ui(uis
MainWindow.ui
)
# qrc files (resources files, that contain icons, at least)
qt5_add_resources(CGAL_Qt5_RESOURCE_FILES
Linear_cell_complex_3.qrc)
################################################################################
set(src_tools
tools/my_tool.h
tools/etc.h
)
add_library(lcc_tools_lib SHARED ${src_tools})
target_link_libraries(lcc_tools_lib PUBLIC
CGAL::CGAL
CGAL::CGAL_Qt5
tet)
if (ASSIMP_FOUND)
target_link_libraries(lcc_tools_lib PUBLIC assimp)
endif (ASSIMP_FOUND)
################################################################################
add_executable(main
${src_tools}
main.cpp
)
add_executable(read_las
${src_tools}
read_las.cpp
)
target_link_libraries(
main PUBLIC lcc_tools_lib CGAL::Eigen3_support)
target_link_libraries(
read_las PUBLIC lcc_tools_lib CGAL::LASLIB_support CGAL::Eigen3_support)
In your first message, there was:
/usr/local/include/CGAL/IO/read_las_points.h:48: error: 'lasreader_las.hpp' file not found In file included from XXX.cpp:32: In file included from /usr/local/include/CGAL/IO/read_points.h:23: /usr/local/include/CGAL/IO/read_las_points.h:48:10: fatal error: 'lasreader_las.hpp' file not found #include <lasreader_las.hpp> ^~~~~~~~~~~~~~~~~~~
I would like to know which .cpp file is XXX.cpp
, in that message. It might be that you actually need to link main
with CGAL::LASLIB_support
as well.
Ohhh that was it ! The main.cpp does not use read las or any las function BUT it includes <CGAL/IO/read_points.h> which automatically checks if LAS defined and then tries to include
Thank you, and excuse me I should have tried to test read_las in a whole different project.
Hello :)
Issue Details
I can't manage to compile the simple read las cgal example, I keep having the following issue
LASlib and LAZlib are installed (in /usr/local/include), and the library should be linked (see below)
Source Code
In my CMakeLists.txt, I have the following lines for LASlib:
[...]
[...]
Environment
Thanks for any help I'm really lost now. Cheers !