小编Ole*_*leg的帖子

如何正确安装包含GSL的标头(准则支持库)

// include/MyLib/MyModel.h

#include <memory>
#include <string>
#include "myEntity.h"
#include <gsl/gsl>

class MyModel {
    public:
        std::unique_ptr<MyEntity> load(std::string id);
        bool store(gsl::not_null<MyEntity*> entity); // <---
}
Run Code Online (Sandbox Code Playgroud)

 

# CMakeLists.txt

# `git submodule add https://github.com/Microsoft/GSL.git dependency/gsl`
add_subdirectory(dependency/gsl EXCLUDE_FROM_ALL)
target_link_libraries(${PROJECT_NAME} INTERFACE GSL)

include(GNUInstallDirs)
install(
    DIRECTORY ${CMAKE_SOURCE_DIR}/include/
    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
# other install and CMake package stuff...
Run Code Online (Sandbox Code Playgroud)

之后make install我有我的库和头安装

/usr/local/lib/libMyLib.so.1.0.0
/usr/local/lib/libMyLib.so.1
/usr/local/lib/libMyLib.so
/usr/local/include/MyLib/MyModel.h
/usr/local/lib/cmake/MyLib/MyLib.cmake
/usr/local/lib/cmake/MyLib/MyLib-noconfig.cmake
/usr/local/lib/cmake/MyLib/MyLibConfig.cmake
/usr/local/lib/cmake/MyLib/MyLibConfigVersion.cmake
Run Code Online (Sandbox Code Playgroud)

 

/usr/local/lib/libMyLib.so.1.0.0
/usr/local/lib/libMyLib.so.1
/usr/local/lib/libMyLib.so
/usr/local/include/MyLib/MyModel.h
/usr/local/lib/cmake/MyLib/MyLib.cmake
/usr/local/lib/cmake/MyLib/MyLib-noconfig.cmake
/usr/local/lib/cmake/MyLib/MyLibConfig.cmake
/usr/local/lib/cmake/MyLib/MyLibConfigVersion.cmake
Run Code Online (Sandbox Code Playgroud)

客户将使用以下库:

# /usr/local/lib/cmake/MyLib/MyLibConfig.cmake

get_filename_component(MyLib_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)

set( MyLib_INCLUDE_DIR  "/usr/local/include" ) …
Run Code Online (Sandbox Code Playgroud)

c++ cmake c++11 cpp-core-guidelines guideline-support-library

5
推荐指数
0
解决办法
754
查看次数