cmake中如何引用库的头文件和库文件的路径,并在target.cmake文件中根据安装路径进行实例化
时间: 2024-02-10 13:10:48 浏览: 150
在CMake中引用库的头文件和库文件路径可以通过以下两个命令实现:
1. `include_directories()`:用于添加头文件路径,可以添加多个路径,例如 `include_directories(/usr/local/include /opt/libfoo/include)`。
2. `link_directories()`:用于添加库文件路径,也可以添加多个路径,例如 `link_directories(/usr/local/lib /opt/libfoo/lib)`。
在 `target.cmake` 文件中,我们可以使用 `target_include_directories()` 和 `target_link_libraries()` 命令来将库文件路径和头文件路径添加到目标文件中。
举个例子,如果我们想要将 `libfoo` 这个库文件添加到我们的目标文件中,我们可以这样写:
```
find_package(foo REQUIRED)
include_directories(${foo_INCLUDE_DIRS})
link_directories(${foo_LIBRARY_DIRS})
target_link_libraries(my_target ${foo_LIBRARIES})
```
其中,`foo_INCLUDE_DIRS` 和 `foo_LIBRARY_DIRS` 是 `find_package()` 命令找到的库文件路径和头文件路径,`foo_LIBRARIES` 是库文件名。在这个例子中,我们将 `libfoo` 的库文件路径和头文件路径添加到了 `my_target` 目标文件中。
当我们在安装时指定安装路径时,可以使用 `${CMAKE_INSTALL_PREFIX}` 变量来获取安装路径。例如,如果我们想要在 `${CMAKE_INSTALL_PREFIX}/include` 和 `${CMAKE_INSTALL_PREFIX}/lib` 中安装头文件和库文件,我们可以这样写:
```
install(TARGETS my_target DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
install(FILES foo.h DESTINATION ${CMAKE_INSTALL_PREFIX}/include)
```
在 `target.cmake` 文件中,我们可以使用 `${CMAKE_INSTALL_PREFIX}` 变量来获取安装路径,并将库文件路径和头文件路径添加到目标文件中,例如:
```
target_include_directories(my_target PUBLIC ${CMAKE_INSTALL_PREFIX}/include)
target_link_libraries(my_target PUBLIC ${CMAKE_INSTALL_PREFIX}/lib/libfoo.so)
```
这样就可以根据安装路径来实例化我们的目标文件了。
阅读全文