2016-07-23 10 views
0

Ich habe eine Bibliothek, die sich mit ImageMagick 6 verbindet. Während der Kompilierung bekomme ich die folgenden Kompilierungswarnungen (von mir zu Fehlern befördert).Wie kann ich während der Kompilierung MAGICKCORE_QUANTUM_DEPTH und MAGICKCORE_HDRI_ENABLE ermitteln?

Ich bin mir bewusst, dass die explizite Definition dieser Werte während der Kompilierung mit -DMAGICKCORE_QUANTUM_DEPTH=16 -DMAGICKCORE_HDRI_ENABLE=0 das Problem lösen wird (auf meiner spezifischen Installation), aber wie ich meine CMake-Konfigurationsdateien so tragbar wie ich sie machen kann, fühlt sich das so an zu brüchig und ich hoffe wirklich, dass es einen besseren Weg gibt.

Was bringt mich zurück zu meiner Frage: Gibt es eine Möglichkeit, MAGICKCORE_HDRI_ENABLE und MAGICKCORE_QUANTUM_DEPTH mit cmake, bash oder ähnliches für die spezifische Version der Bibliothek zu ermitteln, die ich verbinde?

/usr/include/ImageMagick-6/magick/magick-config.h:29:3: error: #warning "you should set MAGICKCORE_QUANTUM_DEPTH to sensible default set it to configure time default" [-Werror=cpp] 
# warning "you should set MAGICKCORE_QUANTUM_DEPTH to sensible default set it to configure time default" 
^
/usr/include/ImageMagick-6/magick/magick-config.h:30:3: error: #warning "this is an obsolete behavior please fix your makefile" [-Werror=cpp] 
# warning "this is an obsolete behavior please fix your makefile" 
^
/usr/include/ImageMagick-6/magick/magick-config.h:52:3: error: #warning "you should set MAGICKCORE_HDRI_ENABLE to sensible default set it to configure time default" [-Werror=cpp] 
# warning "you should set MAGICKCORE_HDRI_ENABLE to sensible default set it to configure time default" 
^
/usr/include/ImageMagick-6/magick/magick-config.h:53:3: error: #warning "this is an obsolete behavior please fix yours makefile" [-Werror=cpp] 
# warning "this is an obsolete behavior please fix yours makefile" 
^
cc1plus: all warnings being treated as errors 

Antwort

1

Während die Frage schreibe ich auf eine Antwort auf diese Frage kam. Ich fasse es hier als die anderen Fragen zu diesem Winkel etwas anders zusammen.

Imagemagick wird mit einem Dienstprogramm namens Magick++-config auf meiner Installation (Ubuntu 16.04) Ich fand dieses Dienstprogramm unter /usr/lib/x86_64-linux-gnu/ImageMagick-6.8.9/bin-Q16/Magick++-config. Unten ist der cmake-Code, den ich verwendet habe, um die relevanten Build-Optionen zu extrahieren.

find_package(ImageMagick 6.7 COMPONENTS Magick++ MagickCore) 
if(ImageMagick_FOUND) 
    # Find Imagemagick Library directory 
    get_filename_component(MAGICK_LIB_DIR ${ImageMagick_MagickCore_LIBRARY} DIRECTORY) 
    # Find where Magick++-config lives 
    file(GLOB_RECURSE MAGICK_CONFIG FOLLOW_SYMLINKS ${MAGICK_LIB_DIR}/Magick++-config) 
    # Ask about CXX and lib flags/locations 
    set(MAGICK_CONFIG ${MAGICK_CONFIG} CACHE string "Path to Magick++-config utility") 
    execute_process(COMMAND "${MAGICK_CONFIG}" "--cxxflags" OUTPUT_VARIABLE MAGICK_CXX_FLAGS) 
    execute_process(COMMAND "${MAGICK_CONFIG}" "--libs" OUTPUT_VARIABLE MAGICK_LD_FLAGS) 
    # Add these to cache 
    set(MAGICK_CXX_FLAGS "${MAGICK_CXX_FLAGS}" CACHE string "ImageMagick configuration specific compilation flags.") 
    set(MAGICK_LD_FLAGS "${MAGICK_LD_FLAGS}" CACHE string "ImageMagick configuration specific linking flags.") 
    # Split into list: 
    string(REGEX MATCHALL "([^\ ]+)" MAGICK_CXX_FLAGS "${MAGICK_CXX_FLAGS}") 
    string(REGEX MATCHALL "([^\ ]+)" MAGICK_LD_FLAGS "${MAGICK_LD_FLAGS}") 
    # Remove trailing whitespace (CMAKE warns about this) 
    string(STRIP "${MAGICK_CXX_FLAGS}" MAGICK_CXX_FLAGS) 
    string(STRIP "${MAGICK_LD_FLAGS}" MAGICK_LD_FLAGS) 

    target_compile_options(<project> ${MAGICK_CXX_FLAGS}) 
    target_link_libraries(<project> ${MAGICK_LD_FLAGS}) 

endif(ImageMagick_FOUND) 

Source

Verwandte Themen