vcpkg 用了 如何 link_directories
时间: 2024-02-20 09:57:28 浏览: 22
要在 CMake 中使用 vcpkg 安装的库,需要在 CMakeLists.txt 中添加以下内容:
```
set(CMAKE_TOOLCHAIN_FILE ${VCPKG_DIR}/scripts/buildsystems/vcpkg.cmake
CACHE STRING "Vcpkg toolchain file")
# 添加需要链接的库的目录
link_directories(${VCPKG_DIR}/installed/x86-windows/lib)
# 添加需要包含的头文件目录
include_directories(${VCPKG_DIR}/installed/x86-windows/include)
# 添加需要链接的库的名称(不包括 lib 前缀和 .lib 后缀)
target_link_libraries(your_target_name lib_name1 lib_name2 ...)
```
其中,`${VCPKG_DIR}` 是 vcpkg 的安装路径,需要根据实际情况进行修改。`your_target_name` 是你的目标项目名称,`lib_name1`、`lib_name2` 等是需要链接的库的名称,不包括 `lib` 前缀和 `.lib` 后缀。
相关问题
link_directories与 link_libraries
link_directories和link_libraries是CMake编译系统中用于设置链接器的相关选项。
link_directories是用来指定链接器查找库文件的路径。当链接器需要在特定目录查找库文件时,可以使用link_directories来设置这些目录。例如,如果你的项目依赖于一个位于"/path/to/library"目录下的库文件,你可以使用link_directories("/path/to/library")来告诉链接器在该目录下查找库文件。
link_libraries用于指定需要链接的库。你可以使用link_libraries函数列出所有需要链接的库名。例如,如果你的项目需要链接名为"mylib"和"otherlib"的两个库,你可以使用link_libraries(mylib otherlib)来告诉链接器将这两个库与你的项目进行链接。
需要注意的是,CMake会将这些选项传递给底层的构建系统(如makefile或Visual Studio项目文件),以便正确配置链接器。
target_link_directories
target_link_directories命令用于将链接目录添加到CMake中的目标(target)。其格式如下:target_link_directories(<target> [BEFORE] <INTERFACE|PUBLIC|PRIVATE> [items1...] [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])。
与之相似的是CMake中的link_directories命令,它用于添加目录,使链接器能够在这些目录中查找库。其格式如下:link_directories([AFTER|BEFORE] directory1 [directory2 ...])。
值得一提的是,现代的CMake建议使用target_link_libraries和target_include_directories来管理外部依赖和源代码,而不是直接使用target_link_directories。例如,使用target_include_directories将库的头文件目录包含到目标中,然后使用target_link_libraries将库链接到目标中。
总之,target_link_directories是用于将链接目录添加到CMake中的目标的命令,而link_directories是用于添加目录使链接器能够在其中查找库的命令。在现代的CMake中,推荐使用target_link_libraries和target_include_directories来管理外部依赖和源代码。<span class="em">1</span><span class="em">2</span><span class="em">3</span>