大家好!
有一个任务
- 编写一个共享库(对于 windows .dll,对于 Linux .so)
- 库的头文件必须放在相应的文件夹中。(对于 Linux /usr/local/include/{library_name}/*)
- 应该可以在正在开发的应用程序中使用头文件。
目前我有 CMakeLists.txt
cmake_minimum_required(VERSION 3.13)
set(PROJECT_VERSION "0.0.1")
project(mylib VERSION ${PROJECT_VERSION})
set(CMAKE_CXX_STANDARD 17)
include(CMakeSources.cmake)
add_library(mylib SHARED ${MY_LIB_HEADERS} ${MY_LIB_SOURCES})
set_target_properties(mylib PROPERTIES
VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION})
include(GNUInstallDirs)
set(MY_LIB_LIBRARY_DESTINATION ${CMAKE_INSTALL_LIBDIR})
set(MY_LIB_HEADERS_DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/mylib)
INSTALL(TARGETS mylib
LIBRARY DESTINATION ${MY_LIB_LIBRARY_DESTINATION})
INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/
PUBLIC_HEADER DESTINATION ${MY_LIB_HEADERS_DESTINATION}
FILES_MATCHING PATTERN "*.h")
几乎可以满足所有要求。第 3 点有错误。
例如:我有两个头文件Ah和Bh,Bh包含Ah(#include "Ah")。
执行 make install 命令后,这些文件被移动到
- /usr/local/include/mylib/啊
- /usr/local/include/mylib/Bh
现在,当我尝试在另一个项目中使用 Bh 时,我得到了错误
/usr/local/include/mylib/Bh:1:致命错误:找不到“Ah”文件#include“Ah”
请帮我解决这个问题。