target_include_directories()和target_link_directories()的区别是什么,举个例子
时间: 2023-07-21 15:13:03 浏览: 101
json-c-0.15.tar.gz CMAKE下载_JSONCPP C++
target_include_directories()和target_link_directories()都是CMake的命令,用于设置目标文件的头文件搜索路径和库文件搜索路径,但它们的作用不同。
target_include_directories()用于指定头文件搜索路径,它会将指定的路径添加到编译器的include路径中,以便在编译时找到相应的头文件。
例如,如果我们有一个名为MyLib的库,包含头文件mylib.h,我们可以使用以下命令将MyLib库的include路径添加到我们的可执行文件中:
```
target_include_directories(MyExe PRIVATE ${CMAKE_SOURCE_DIR}/MyLib/include)
```
这样,在编译MyExe时,编译器就会在指定的路径中查找mylib.h头文件。
target_link_directories()用于指定库文件搜索路径,它会将指定的路径添加到链接器的库文件搜索路径中,以便在链接时找到相应的库文件。
例如,如果我们有一个名为MyLib的库,包含名为mylib.lib的库文件,我们可以使用以下命令将MyLib库的库文件路径添加到我们的可执行文件中:
```
target_link_directories(MyExe PRIVATE ${CMAKE_SOURCE_DIR}/MyLib/lib)
```
这样,在链接MyExe时,链接器就会在指定的路径中查找mylib.lib库文件。
需要注意的是,使用target_link_directories()只是告诉链接器去哪里找库文件,但不会自动链接库文件。我们还需要使用target_link_libraries()命令将库文件链接到我们的可执行文件中。
```
target_link_libraries(MyExe PRIVATE MyLib)
```
这样,在链接MyExe时,链接器就会在指定的路径中查找mylib.lib库文件,并将其链接到我们的可执行文件中。
阅读全文