プロジェクトのビルドに cmake を使用していますが、これらのエラーが発生します。
Scanning dependencies of target las2vtk
[ 50%] Building CXX object CMakeFiles/las2vtk.dir/LAS2VTK.cxx.o
[100%] Building CXX object CMakeFiles/las2vtk.dir/PointSet.cxx.o
Linking CXX executable las2vtk
CMakeFiles/las2vtk.dir/LAS2VTK.cxx.o: In function `main':
LAS2VTK.cxx:(.text+0xf1): undefined reference to `PointSet<PointND<3, float> >::read_LAS(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, int)'
LAS2VTK.cxx:(.text+0x104): undefined reference to `PointSet<PointND<3, float> >::write_VTK(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'
collect2: ld returned 1 exit status
make[2]: *** [las2vtk] Error 1
make[1]: *** [CMakeFiles/las2vtk.dir/all] Error 2
make: *** [all] Error 2
これらの関数が PointSet.cxx に記述されている場合、これらの関数が定義されていない理由がわかりません。以下は私の CMakeLists.txt ファイルです。現在、PointSet.h、PointSet.cxx、LAS2VTK.cxx はすべて同じフォルダーにありますが、変更する可能性があります。
cmake_minimum_required(VERSION 2.8)
PROJECT(las2vtk)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
set(SOURCES PointSet.cxx)
set(LASLIBS_INCLUDE "${CMAKE_MODULE_PATH}/lastools/laslib/inc")
set(LASLIBS_LIB "${CMAKE_MODULE_PATH}/lastools/laslib/lib")
include_directories(${LASLIBS_INCLUDE})
link_directories(${LASLIBS_LIB})
set(LASLIBS las)
add_executable(las2vtk LAS2VTK.cxx ${SOURCES})
target_link_libraries(las2vtk ${LASLIBS})
find_package(VTK REQUIRED)
include(${VTK_USE_FILE})
if(VTK_LIBRARIES)
target_link_libraries(las2vtk ${VTK_LIBRARIES})
else()
target_link_libraries(las2vtk vtkHybrid )
endif()
PointSet.h ファイル内に関数定義があり、PointSet.cxx ファイルがなくても問題なくコンパイルされましたが、コード ベースをクリーンアップしたかったのです。