Hallo
ich möchte ein Projekt erstellen
Im Projektordner lege ich eine "build.sh" ab und lege ein Verzeichnis "src" an, in dem meine ".cpp" liegt.
Im Projektordner als auch in "src" erstelle ich eine CMakeLists.txt
Die Dateien sehen wie folgt aus:
build.sh
ROOTDIR=`pwd`
CONFIGS="release"
BUILDFOLDER=$ROOTDIR/build/$CONFIG
DISTFOLDER=$ROOTDIR/dist/$CONFIG
mkdir -p $BUILDFOLDER $DISTFOLDER
cd $BUILDFOLDER
cmake -DCMAKE_BUILD_TYPE=$CONFIG $ROOTDIR || exit 1
make
make install
die CMakeLists.txt im Projektordner:
project (pc)
cmake_minimum_required(VERSION 2.8)
set(INSTALL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/dist/${CMAKE_BUILD_TYPE}/bin/")
find_package(PCL 1.2 REQUIRED)
find_package(Eigen3 REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_compile_options(-Wall -Wextra)
add_subdirectory(src)
die CMakeLists.txt in "src"
add_executable(${PROJECT_NAME} "${CMAKE_CURRENT_SOURCE_DIR}/main.cpp")
target_link_libraries (pc "${PCL_LIBRARIES}" Eigen3::Eigen3)
install(TARGETS ${PROJECT_NAME} DESTINATION ${INSTALL_DIR})
Also ich möchte einfach ein Geordnetes Projekt erstellen und die PCL Library benutzen.
Bei einem Beispielprogramm von der PLC war folgende CMakeLists.txt, die ich wie man sieht vom Prinzip in meine Dateien übernommen hab:
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
project(bspline_fitting)
find_package(PCL 1.7 REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable (bspline_fitting bspline_fitting.cpp)
target_link_libraries (bspline_fitting ${PCL_LIBRARIES})
jedoch findet er die Library nicht.
Hier die letzten Zeilen von vielen bei der Ausgabe:
/usr/bin/ld: cannot find -loptimized
/usr/bin/ld: cannot find -ldebug
/usr/bin/ld: cannot find -loptimized
/usr/bin/ld: cannot find -ldebug
/usr/bin/ld: cannot find -loptimized
/usr/bin/ld: cannot find -ldebug
collect2: error: ld returned 1 exit status
src/CMakeFiles/pc.dir/build.make:383: die Regel für Ziel „src/pc“ scheiterte
make[2]: *** [src/pc] Fehler 1
CMakeFiles/Makefile2:85: die Regel für Ziel „src/CMakeFiles/pc.dir/all“ scheiterte
make[1]: *** [src/CMakeFiles/pc.dir/all] Fehler 2
Makefile:127: die Regel für Ziel „all“ scheiterte
make: *** [all] Fehler 2
Kann mir einer helfen,
wie binde ich Libraries ein?
Wie gebe ich noch Argumente für den Compiler/Linker mit, das er z.B. -std=c++11 benutzen soll.
Oder wenn mein Ausführen des Programms
LD_LIBRARY_PATH=/path/:$LD_LIBRARY_PATH ./programm gebraucht wird, kann man das auch mit CMake verarbeiten, sodass man das nicht ständig beim Ausführen eintippen muss ?