Search code examples
c++makefilecmakeleap-motion

CMAKEList leap motion


I am trying to build a cmakelist file from makefile of leap motion, I can compile in a specific directory, I need to copy /include/ and /lib/x64/ directories . The makefile is the follow:

LEAP_LIBRARY := ./lib/x64/libLeap.so -Wl,-rpath,./lib/x64

Sample: Sample.cpp
    $(CXX) -Wall -g -I include Sample.cpp -o Sample $(LEAP_LIBRARY)

I have tried to build a cmakelist file as follows:

cmake_minimum_required(VERSION 2.8)
project(Sample)

INCLUDE_DIRECTORIES(/include/)
LINK_DIRECTORIES(/lib/x64/)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -g -I /include/ -Wl,-rpath,./lib/x64")

add_executable(Sample Sample.cpp )
target_link_libraries(Sample libLeap.so)

But I always get the same error:

Linking CXX executable Sample
/usr/bin/ld: can't find -lLeap
collect2: error: ld returned 1 exit status
make[2]: *** [Sample] Error 1
make[1]: *** [CMakeFiles/Sample.dir/all] Error 2
make: *** [all] Error 2

Thanks and regards.


Solution

  • I could solve with following lines:

    cmake_minimum_required(VERSION 2.8)
    project(Sample)
    SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
    INCLUDE_DIRECTORIES(../include/)
    LINK_DIRECTORIES(../lib/x64/)
    
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -g")
    
    add_executable(Sample Sample.cpp )
    target_link_libraries(Sample -lLeap)
    

    This solution has warnings but works:

    CMake Warning (dev) at CMakeLists.txt:5 (LINK_DIRECTORIES):
    This command specifies the relative path
    
    ../lib/x64
    
    as a link directory.
    
    Policy CMP0015 is not set: link_directories() treats paths relative to the
    source dir.  Run "cmake --help-policy CMP0015" for policy details.  Use the
    cmake_policy command to set the policy and suppress this warning.
    This warning is for project developers.  Use -Wno-dev to suppress it.
    
    -- Configuring done
    -- Generating done
    -- Build files....
    

    Two way to delete this warning:

    cmake_minimum_required(VERSION 2.8)
    project(Sample)
    
    cmake_policy(SET CMP0015 NEW)
    
    SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
    INCLUDE_DIRECTORIES(../include/)
    LINK_DIRECTORIES(lib/x64/)
    
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -g")
    
    add_executable(Sample Sample.cpp )
    target_link_libraries(Sample -lLeap)
    

    Or use cmake .. -Wno-dev