Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cmake find模块用于区分共享库或静态库 我有一个使用LIbCuto to ++的CGEID C++项目。我已托管FindCryptoPP.cmake模块。重要部分包括: find_library(CryptoPP_LIBRARY NAMES cryptopp DOC "CryptoPP library" NO_PACKAGE_ROOT_PATH PATHS "/usr/lib/x86_64-linux-gnu/" ) ... add_library(CryptoPP::CryptoPP UNKNOWN IMPORTED) set_target_properties(CryptoPP::CryptoPP PROPERTIES IMPORTED_LOCATION "${CryptoPP_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${CryptoPP_INCLUDE_DIR}")_C++_Cmake_Shared Libraries_Static Libraries - Fatal编程技术网

Cmake find模块用于区分共享库或静态库 我有一个使用LIbCuto to ++的CGEID C++项目。我已托管FindCryptoPP.cmake模块。重要部分包括: find_library(CryptoPP_LIBRARY NAMES cryptopp DOC "CryptoPP library" NO_PACKAGE_ROOT_PATH PATHS "/usr/lib/x86_64-linux-gnu/" ) ... add_library(CryptoPP::CryptoPP UNKNOWN IMPORTED) set_target_properties(CryptoPP::CryptoPP PROPERTIES IMPORTED_LOCATION "${CryptoPP_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${CryptoPP_INCLUDE_DIR}")

Cmake find模块用于区分共享库或静态库 我有一个使用LIbCuto to ++的CGEID C++项目。我已托管FindCryptoPP.cmake模块。重要部分包括: find_library(CryptoPP_LIBRARY NAMES cryptopp DOC "CryptoPP library" NO_PACKAGE_ROOT_PATH PATHS "/usr/lib/x86_64-linux-gnu/" ) ... add_library(CryptoPP::CryptoPP UNKNOWN IMPORTED) set_target_properties(CryptoPP::CryptoPP PROPERTIES IMPORTED_LOCATION "${CryptoPP_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${CryptoPP_INCLUDE_DIR}"),c++,cmake,shared-libraries,static-libraries,C++,Cmake,Shared Libraries,Static Libraries,这很好,可以找到静态库文件*.a。现在我想创建单独的目标CryptoPP::CryptoPP static和CryptoPP::CryptoPP shared。 必要的文件已安装默认ubuntu安装: /usr/lib/x86_64-linux-gnu/libcryptopp.a /usr/lib/x86_64-linux-gnu/libcryptopp.so 我想知道如何告诉find_library搜索静态或共享版本,最好是以便携方式搜索-我需要所有Linux、Windows和MacOS,并指

这很好,可以找到静态库文件*.a。现在我想创建单独的目标CryptoPP::CryptoPP static和CryptoPP::CryptoPP shared。 必要的文件已安装默认ubuntu安装:

/usr/lib/x86_64-linux-gnu/libcryptopp.a /usr/lib/x86_64-linux-gnu/libcryptopp.so
我想知道如何告诉find_library搜索静态或共享版本,最好是以便携方式搜索-我需要所有Linux、Windows和MacOS,并指定创建目标的类型。

实际上,CMake的默认设置是先搜索共享库,然后搜索静态库

键是全局变量中值的顺序,例如,作为CMake编译器/平台检测命令的一部分,设置为:

setCMAKE_FIND_LIBRARY_后缀。so.a 有关解决方案,请查看现有的查找模块,如:

通过调整CMAKE_FIND_LIBRARY_后缀来支持静态库的首选项 如果Boost\u使用\u STATIC\u LIBS 设置{CMAKE\u FIND\u LIBRARY\u后缀${CMAKE\u FIND\u LIBRARY\u后缀} ifWIN32 listINSERT CMAKE_FIND_LIBRARY_后缀0.lib.a 其他的 setCMAKE_FIND_LIBRARY_后缀。a 恩迪夫 恩迪夫 此处,为调用临时更改了CMAKE\u FIND\u LIBRARY\u后缀变量

同样的情况也适用于此。如果您想进行两次相同的搜索,请注意find_库会缓存其结果

工具书类
据我所知,在搜索库时,CMake不区分静态库和共享库。它所拥有的只是可能的库前缀和后缀的列表。当然,还有名字选项。您可以通过更改可能的库的前缀和后缀来影响CMake首选项注意,它们是全局的,因此您需要在每次find_library调用之前更改它们,或者在名称中指定要搜索的确切库文件:NAMES libcryptopp.so。至于便携性。。。您可以检查目标平台,然后指定相应的文件。或者您可以列出所有可能平台的名称。