我的动机是:我想找到一个名为libboost_python38.so的库,如果像这样使用find_library命令,我就找不到库:
find_library(USD_BOOST_PYTHON boost_python HINTS ${USD_LIBRARY_DIRECTORY})只有当我使用此命令时,才能找到库:
find_library(USD_BOOST_PYTHON boost_python38 HINTS ${USD_LIBRARY_DIRECTORY})这种方法将使我的cmake文件失去一些跨平台功能,所以我希望通过一些模糊搜索方法来搜索这个库。我能用更好的方式做这件事吗?
发布于 2022-10-17 13:30:23
没有什么特别的,但是您可以使用NAMES参数,并传递一些find_library应该查找的坦率的名称,请参阅这里。您还可以提供一些不同的PATH和PATH_SUFFIXES,这可能会有所帮助。
如果仍然需要更多的逻辑来查找库,那么很可能需要在find_library调用之前处理它们,例如,预先总结库的名称,将其放入变量,并将其作为库的名称传递给find_library。
发布于 2022-10-17 16:15:44
不要为此目的使用find_library。相反,请使用boost随cmake配置脚本并使用find_package这一事实。
find_package(Boost REQUIRED COMPONENTS python)
target_link_libraries(my_target PRIVATE Boost::python)这有一个额外的好处,即所有依赖项都会自动添加到my_target中,同时还会添加必要的包含目录。
如果您已将包安装到默认位置,则不需要任何附加信息。如果您自己构建了boost并将其安装到一个非标准位置,您可能需要提供有关安装位置的信息,例如将安装位置添加到CMAKE_PREFIX_PATH中。
注意:find_package有额外的参数,允许您在需要时限制可接受的boost版本。
https://stackoverflow.com/questions/74093482
复制相似问题