Add external libraries to CMakeList.txt c++
156,068
I would start with upgrade of CMAKE version.
You can use INCLUDE_DIRECTORIES for header location and LINK_DIRECTORIES + TARGET_LINK_LIBRARIES for libraries
INCLUDE_DIRECTORIES(your/header/dir)
LINK_DIRECTORIES(your/library/dir)
rosbuild_add_executable(kinectueye src/kinect_ueye.cpp)
TARGET_LINK_LIBRARIES(kinectueye lib1 lib2 lib2 ...)
note that lib1
is expanded to liblib1.so
(on Linux), so use ln to create appropriate links in case you do not have them
Comments
-
Ja_cpp almost 2 years
I have my external library as shown in this picture that I create the symbolic links after:
and the headers related to the library in other file:
I'm working with
ROS ubuntu
and I need to add these libraries to my package toCmakeList.txt
:cmake_minimum_required(VERSION 2.4.6) include($ENV{ROS_ROOT}/core/rosbuild/rosbuild.cmake) rosbuild_init() #set the default path for built executables to the "bin" directory set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) #set the default path for built libraries to the "lib" directory set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) #common commands for building c++ executables and libraries #rosbuild_add_library(${PROJECT_NAME} src/example.cpp) #target_link_libraries(${PROJECT_NAME} another_library) #rosbuild_add_boost_directories() #rosbuild_link_boost(${PROJECT_NAME} thread) #rosbuild_add_executable(example examples/example.cpp) #target_link_libraries(example ${PROJECT_NAME}) rosbuild_add_executable(kinectueye src/kinect_ueye.cpp)
So my question is how can I add these folders (I think the first one that I need to add I'm not sure) to my
CmakeList.txt
file so as I can use the classes and the methods in my program.-
grepsedawk almost 7 yearsScreenshots 404
-
Ja_cpp almost 7 years@Pachonk it was just a screenshot of files in a folder.. I don't have it anymore
-
Mitja almost 7 years404s are why I hate questions containing links.
-
Ja_cpp almost 7 years@Mitja When I posted that question I was just created my account so I didn't have enough reputations to post an image in my question without a link. Sorry!
-
Mitja almost 7 yearsSorry, didn't know about those limitations. To me, it makes no sense to allow new accounts to embed links but not include images. Both can be used for spam, and links even better.. Also, I can't take my downvote from this question anymore as it is now >2hrs old (and, tbh, the question is kind of bad w/o the links working), so take an upvote to another reasonable question of yours instead.
-
Ja_cpp over 6 years@Mitja that's okay! I've found the library again and I just edited my post.. thanks for pointing that out.. (@Pachonk)
-
iled over 6 years@Ja_cpp next time use
tree
or something similar. -
Trevor Boyd Smith about 6 yearsPossible duplicate of CMake link to external library
-
-
Ja_cpp almost 10 yearsLike that INCLUDE_DIRECTORIES(home/jros/roskinectueye/MIXEDVISION/include/MIXEDVISION) LINK_DIRECTORIES(/home/jros/roskinectueye/MIXEDVISION/lib64) rosbuild_add_executable(kinectueye src/kinect_ueye.cpp) TARGET_LINK_LIBRARIES(kinectueye libgsl.so.0.16.0 libgslcblas.so.0.0.0)
-
Peter almost 10 years
TARGET_LINK_LIBRARIES(kinectueye gsl gslcblas ...)
-
Ja_cpp almost 10 yearsI get this error: Linking CXX executable ../bin/kinectueye /usr/bin/ld: cannot find -lgsl /usr/bin/ld: cannot find -lHalf and for all the libraries !
-
Peter almost 10 yearsmake sure you have symbolic links in your directory libgsl.so -> libgsl.so.0.16.0, etc
-
Ja_cpp almost 10 yearsYes I have it, as shown in the first image that I post
-
Peter almost 10 yearsNo you do not, you need libname without "numbers" at the end
-
Peter almost 10 yearscreate symbolic links
-
Ja_cpp almost 10 yearsI do ! the file become like shortcut .. is that symbolic link ?
-
Ja_cpp almost 10 yearsunfortunately yes, I get Linking CXX executable ../bin/kinectueye /usr/bin/ld: cannot find -lgsl /usr/bin/ld: cannot find -lgslcblas ..... and some others
-
Peter almost 10 yearsPlease run
make VERBOSE=1
and copy here the full link command for kinectueye. -
Ja_cpp almost 10 yearsI get that: make: *** No targets specified and no makefile found. Stop.
-
Peter almost 10 years
make VERBOSE=1 kinectueye
, in the folder where you have generated build system from cmake -
Peter almost 10 yearsSorry, I will not download the file. Please post it here. Just a link line.
-
Ja_cpp almost 10 yearsThank you @Peter It works now... I changed my package from Rosbuild to catkin. and concerning the library I change it to *.so.
-
filip over 5 yearsWhat's "kinectueye"?