我正在Ubuntu 16.04机器上编译大量代码(超过100,000行)。在执行此过程的过程中,在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 ..
问题: 警告到底在告诉我什么?我该如何调试它?
答案 0 :(得分:3)
警告与“库”一词的含义有关:它是一个文件(/path/to/xxx.so
,/path/to/xxx.a
左右),而不是目录。
假设项目正确,则警告信号提示用户指定的设置不正确。
您设置了一个变量ARMADILLO_LIBRARY
,该变量旨在包含一个库,但您为此变量分配了/usr/lib
目录。