由于命名冲突,我在所有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 _"的库的绝对路径。
我在这里做错了吗?