CMake FIND_LIBRARY()忽略了库的OUTPUT_NAME

时间:2018-01-25 18:38:07

标签: cmake

由于命名冲突,我在所有PCL库(http://pointclouds.org/)中添加了一个前缀。我是通过设置属性OUTPUT_NAME(https://cmake.org/cmake/help/v3.0/command/set_target_properties.html)来完成此操作的。这是一个例子:

PCL_ADD_LIBRARY("${LIB_NAME}" "${SUBSYS_NAME}" ${srcs})
SET_TARGET_PROPERTIES("${LIB_NAME}" PROPERTIES OUTPUT_NAME "ii3d_${LIB_NAME}")

请注意,PCL_ADD_LIBRARY()宏使用其中的ADD_LIBRARY()

以上运作良好。它创建了ii3d_pcl_common_release.lib和ii3d_pcl_common_release.dll,而不是创建pcl_common_release.lib和pcl_common_release.dll。这就是我想要的。

当另一个库想要使用上述库时,问题就出现了。目前PCLConfig.cmake已经

find_library(PCL_${COMPONENT}_LIBRARY ${pcl_component}${PCL_RELEASE_SUFFIX}
  HINTS ${PCL_LIBRARY_DIRS}
  DOC "path to ${pcl_component} library"
  NO_DEFAULT_PATH)

它返回了没有" ii3d _"的库的绝对路径。字首。这个文件甚至不存在。例如,它返回E:/libs/pcl/builds/win64-shared-release-cl-qt/lib/pcl_common_release.lib。应该返回E:/libs/pcl/builds/win64-shared-release-cl-qt/lib/ii3d_pcl_common_release.lib

我甚至尝试添加" ii3d _" FIND_LIBRARY()内的前缀如下所示:

find_library(PCL_${COMPONENT}_LIBRARY 
  "ii3d_${pcl_component}${PCL_RELEASE_SUFFIX}"
  HINTS ${PCL_LIBRARY_DIRS}
  DOC "path to ${pcl_component} library"
  NO_DEFAULT_PATH)

但即使这样也会返回没有前缀" ii3d _"的库的绝对路径。

我在这里做错了吗?

0 个答案:

没有答案