Понимание "запросы, ссылающиеся на каталог" cmake предупреждение - PullRequest
0 голосов
/ 05 февраля 2019

Я собираю огромный код (более 100 000 строк) на машине с Ubuntu 16.04.В процессе этого во время процесса сборки cmake (v3.5.1) (перед запуском make) я генерирую массу ПРЕДУПРЕЖДЕНИЙ.

Например,

WARNING: Target "gadgetron_moco" requests linking to directory "/usr/lib".  Targets may link only to libraries.  CMake is dropping the item.

Очевидно, я не могу опубликовать здесь код, но в исходном коде я нашел moco/CMakeLists.txt.Вот фрагмент кода из этого файла:

if(CUDA_FOUND)
    add_library(gadgetron_moco SHARED
        cpuRegistrationAveragingGadget.h
        gadgetron_moco_export.h
        gpuRegistrationAveragingGadget.h
        gpuRegistrationScatteringGadget.h
        RegistrationAveragingGadget.h
        RegistrationScatteringGadget.h
        ${CPU_GADGETS}
        ${GPU_GADGETS}
      )

    set_target_properties(gadgetron_moco PROPERTIES VERSION ${GADGETRON_VERSION_STRING} SOVERSION ${GADGETRON_SOVERSION})

    target_link_libraries(gadgetron_moco
      gadgetron_gadgetbase
      gadgetron_toolbox_cpucore gadgetron_mricore ${CPU_LIBS} ${GPU_LIBS}
      ${Boost_LIBRARIES} ${ISMRMRD_LIBRARIES}
      optimized ${ACE_LIBRARIES} debug ${ACE_DEBUG_LIBRARY}
      )

    install (TARGETS gadgetron_moco DESTINATION lib COMPONENT main)
endif()

Команда, которую я использовал для вызова cmake:

cmake -DCMAKE_INSTALL_PREFIX=/opt/gadgetron/ \
    -DCMAKE_CXX_COMPILER=/usr/bin/g++-5 \
    -DCMAKE_C_COMPILER=/usr/bin/gcc-5 \
    -DBoost_INCLUDE_DIR=/usr/include/ \
    -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-8.0/ \
    -DARMADILLO_LIBRARY=/usr/lib/ \
    -DARMADILLO_INCLUDE_DIR=/usr/include/ \
    -DMKLROOT_PATH=/opt/intel/ \
    -DZFP_INCLUDE_DIR=/opt/ZFP/inc \
    -DZFP_LIBRARY=/opt/ZFP/lib \
    -DCMAKE_PREFIX_PATH=/opt/ismrmrd/:/opt/siemens_to_ismrmrd:/usr/lib/ \
    -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON ..

Вопрос: Что именно говорит мне предупреждение?Как мне отладить его?

1 Ответ

0 голосов
/ 05 февраля 2019

«Библиотека» - это --file -!

Предупреждение касается значения слова «библиотека»: это файл (/path/to/xxx.so, /path/to/xxx.a или около того), а не каталог .

Если проект верен, сигналы о неправильных пользовательских настройках сигнализируют о предупреждении.

Вы задаете переменную ARMADILLO_LIBRARY, которая должна содержать библиотеку , но вы присваиваете /usr/lib каталог этой переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...