2016-10-19 6 views
2

Ich habe GSL installiert und die include<gsl/...> machen nicht der Compiler beschweren, aber wenn ich den Code make und es will tatsächlich die gsl_sf_lnpoch Funktion von GSL nennen, klagt esundefined reference to GSL

undefined reference zu `gsl_sf_lnpoch‘ gegoogelt

ich und es stellt sich heraus, dass GSL nicht genug installiert zu haben ist, und ich brauche CMake und GSL zu verknüpfen. Ich gründe mich auf jemandes Programm, aber ich bin nicht vertraut mit CMake funktioniert, und bin mit diesem albernen Bit fest. Ich schätze es, wenn mir jemand sagt, was ich zur Datei CMakeLists.txt unten hinzufügen muss, um make und gsl zu verknüpfen.

cmake_minimum_required(VERSION 2.8.7) 
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules") 
include(AppendCompilerFlags) 

project(k CXX C) 
set(CMAKE_BUILD_TYPE "Release") 
#set(CMAKE_BUILD_TYPE "Debug") 

# C++11 compiler Check 
if(NOT CMAKE_CXX_COMPILER_VERSION) # work around for cmake versions smaller than 2.8.10 
    execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE CMAKE_CXX_COMPILER_VERSION) 
endif() 
if(CMAKE_CXX_COMPILER MATCHES ".*clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") 
     set(CMAKE_COMPILER_IS_CLANGXX 1) 
endif() 
if((CMAKE_COMPILER_IS_GNUCXX AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 4.7) OR 
    (CMAKE_COMPILER_IS_CLANGXX AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 3.2)) 
    message(FATAL_ERROR "Your C++ compiler does not support C++11. Please install g++ 4.7 (or greater) or clang 3.2 (or greater)") 
else() 
    message(STATUS "Compiler is recent enough to support C++11.") 
endif() 
if(CMAKE_COMPILER_IS_GNUCXX) 
    append_cxx_compiler_flags("-std=c++11 -Wall -Wextra " "GCC" CMAKE_CXX_FLAGS) 
    append_cxx_compiler_flags("-ffast-math -funroll-loops" "GCC" CMAKE_CXX_FLAGS) 
else() 
    append_cxx_compiler_flags("-std=c++11 -Wall" "CLANG" CMAKE_CXX_FLAGS) 
    append_cxx_compiler_flags("-stdlib=libc++" "CLANG" CMAKE_CXX_FLAGS) 
    append_cxx_compiler_flags("-ffast-math -funroll-loops" "CLANG" CMAKE_CXX_FLAGS) 
endif() 
include(CheckAVX2) 
if(BUILTIN_POPCNT) 
    if(CMAKE_COMPILER_IS_GNUCXX) 
     append_cxx_compiler_flags("-msse4.2" "GCC" CMAKE_CXX_FLAGS) 
    else() 
     append_cxx_compiler_flags("-msse4.2" "CLANG" CMAKE_CXX_FLAGS) 
    endif() 
    message(STATUS "CPU does support fast popcnt.") 
else() 
    message(STATUS "CPU does NOT support fast popcnt") 
endif() 

add_subdirectory(external/googletest) 

include_directories(${CMAKE_HOME_DIRECTORY}/include 
        ${CMAKE_HOME_DIRECTORY}/external/googletest/include 
        ) 

add_executable(build.x src/build.cpp) 
target_link_libraries(build.x pthread divsufsort divsufsort64) 

Antwort

0

Sie fehlen die Linker-Flag der GSL-Bibliothek. Versuchen

target_link_libraries(... gsl) 
Verwandte Themen