2017-06-06 6 views
0

Ich versuche, das CheckIncludeFileCXX Modul zu überprüfen, <gsl/gsl> ist im System vorhanden. GSL existiert bei /usr/local/include/gsl/gsl aber Generation versagt bei "GSL not found"CheckIncludeFileCXX findet keine Kopfzeile

project(cpp-binaries) 
cmake_minimum_required(VERSION 3.2) 

include(CheckIncludeFileCXX) 
CHECK_INCLUDE_FILE_CXX("gsl/gsl" GSL_LIBRARY) 

if(NOT GSL_LIBRARY) 
    message(FATAL_ERROR "GSL not found") 
endif(NOT GSL_LIBRARY) 

add_executable(
    cpp-binaries 
    "main.cpp" 
) 
+0

Ich bin nicht vertraut mit 'GSL', aber sind Sie sicher, dass die Kopfzeile kein' .h' am Ende hat? Ansonsten benutze den Compiler nicht um den Header zu finden, benutze CMake Module (in deinem Fall ['FindGSL'] (https://cmake.org/cmake/help/latest/module/FindGSL.html)) oder [' find_file() '] (https://cmake.org/cmake/help/latest/command/find_file.html) Befehl. Oder versuchen Sie zuerst 'set (CMAKE_REQUIRED_INCLUDES"/usr/local/include ")'. – Florian

+0

[GSL] (https://github.com/Microsoft/GSL) ist eine Nur-Header-Bibliothek und es gibt keine .h. Es wird auch nicht funktionieren, nachdem 'CMAKE_REQUIRED_INCLUDES' gesetzt wurde –

Antwort

0

Ok sah ich mehr in CheckIncludeFileCXX und Sie haben im Grunde etwas mit CMAKE_REQUIRED_INCLUDES zu spezifizieren oder sonst ist es nicht wissen, wo zu suchen. Um es etwas zu geben, sucht es ruhig nach dem Include mit aber es werden immer noch Fehler ausgegeben, wenn nichts gefunden wird.

project(gsl_t) 
cmake_minimum_required(VERSION 3.2) 

find_path(
    gsl_location 
    gsl 
    HINTS ENV GSLDIR 
) 

if(gsl_location) 
    get_filename_component(gsl_include_dir ${gsl_location} DIRECTORY) 
    list(APPEND CMAKE_INCLUDE_PATH ${gsl_include_dir}) 
endif(gsl_location) 

include(CheckIncludeFileCXX) 
set(CMAKE_REQUIRED_INCLUDES ${CMAKE_INCLUDE_PATH}) 
CHECK_INCLUDE_FILE_CXX("gsl/gsl" gsl_found) 

if(NOT gsl_found) 
    message(FATAL_ERROR "GSL not found. \ 
         Try setting the GSLDIR environment variable") 
endif(NOT gsl_found) 

add_executable(
    gsl_t 
    "main.cpp" 
)