“理解”;请求链接到目录";cmake警告

“理解”;请求链接到目录";cmake警告,cmake,Cmake,我正在Ubuntu 16.04机器上编译大量代码(100000多行)。在这样做的过程中,在cmake(v3.5.1)构建过程中(在运行make之前),我生成了大量警告 例如 显然,我不能在这里重新发布代码,但在源代码中我找到了一个moco/CMakeLists.txt。以下是该文件中的代码片段: if(CUDA_FOUND) add_library(gadgetron_moco SHARED cpuRegistrationAveragingGadget.h

我正在Ubuntu 16.04机器上编译大量代码(100000多行)。在这样做的过程中,在cmake(v3.5.1)构建过程中(在运行make之前),我生成了大量警告

例如

显然,我不能在这里重新发布代码,但在源代码中我找到了一个
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 ..
问题: 警告到底告诉了我什么?如何调试它?

一个“库”是一个--file--! 警告是关于“库”一词的含义:它是一个文件(
/path/to/xxx.so
/path/to/xxx.a
左右),而不是一个目录

假设项目是正确的,则警告信号表示用户指定的设置不正确


您设置了一个变量
ARMADILLO_库
,该变量旨在包含一个,但您将
/usr/lib
目录分配给该变量。

我明白了。我的想法就像编译器(如gcc)一样,在CMake“world”中指定查找库的目录(即
-L/some/non/standard/path
),后缀为
\u library
的变量几乎总是表示库。当变量表示库目录时,它有适当的后缀:
\u DIR
\u directory
,等等。
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 ..