make的link_directories命令不起作用

简介: 按照《CMake Practice》中第六章的设置,采用include_directories命令去寻找共享库的路径,src/CMakeLists.txt如下: ADD_EXECUTABLE(main main.c) INCLUDE_DIRECTORIES(/tmp/include/hello) LINK_DIRECTORIES(/tmp/lib/) TARGET_LINK_LIBRARIES(main libhello.a) 执行cmake及make后,仍然有link error。

按照《CMake Practice》中第六章的设置,采用include_directories命令去寻找共享库的路径,src/CMakeLists.txt如下:

ADD_EXECUTABLE(main main.c)
INCLUDE_DIRECTORIES(/tmp/include/hello)
LINK_DIRECTORIES(/tmp/lib/)
TARGET_LINK_LIBRARIES(main libhello.a)

执行cmake及make后,仍然有link error。

cmake的官网对include_directories的说明如下:

*Specify directories in which the linker will look for libraries.

link_directories(directory1 directory2 …)

Note that this command is rarely necessary. Library locations returned by find_package() and find_library() are absolute paths. Pass these absolute library file paths directly to the target_link_libraries() command. CMake will ensure the linker finds them.*

官网不推荐使用link_directoris,而是推荐使用find_package和find_library寻找共享库的绝对路径,再传给target_link_libraries使用。

按照这里的例子,改写了src/CMakeLists.txt如下:

ADD_EXECUTABLE(main main.c)
INCLUDE_DIRECTORIES(/tmp/include/hello)

find_library(LIBHELLO_PATH hello /tmp/lib)
IF(NOT LIBHELLO_PATH) MESSAGE(FATAL_ERROR "libhello not found") ENDIF(NOT LIBHELLO_PATH) MESSAGE(STATUS ${LIBHELLO_PATH} " found") TARGET_LINK_LIBRARIES(main ${LIBHELLO_PATH})

这下可以编译通过了。

目录
相关文章
|
9月前
|
测试技术 编译器 vr&ar
CMake深度解析:掌握add_custom_command,精通Makefile生成规则(一)
CMake深度解析:掌握add_custom_command,精通Makefile生成规则
765 1
|
5月前
fix libpng warning: iCCP: Not recognizing known sRGB profile ......
本文介绍了如何解决在使用ImageMagick 7.1.0-13 q16 x64时出现的libpng警告:iCCP: 不识别已知的sRGB配置文件的问题。提供了一个批处理脚本,该脚本可以搜索子目录中的PNG文件并处理它们,以消除警告。文章还提供了脚本的位置和运行结果的截图。
|
9月前
|
存储 Shell iOS开发
CMake中文手册_target_link_libraries(3.26)
CMake中文手册_target_link_libraries(3.26)
544 0
|
9月前
|
存储 Linux C++
CMake深度解析:掌握add_custom_command,精通Makefile生成规则(二)
CMake深度解析:掌握add_custom_command,精通Makefile生成规则
415 0
|
6月前
【petalinux 2024.01】petalinux-build时module ‘plnx_vars‘ has no attribute ‘CopyDir‘错误
【petalinux 2024.01】petalinux-build时module ‘plnx_vars‘ has no attribute ‘CopyDir‘错误
173 0
|
7月前
|
应用服务中间件 nginx
Ngnix08源码的复杂安装, --prefix=PATH可以设置一些相关的路径,对./configure进行进行编译设置,--sbin-path=PATH可以启动文件,或者相make clean清屏
Ngnix08源码的复杂安装, --prefix=PATH可以设置一些相关的路径,对./configure进行进行编译设置,--sbin-path=PATH可以启动文件,或者相make clean清屏
CMake常用命令——有无target
CMake常用命令——有无target
222 1
|
9月前
MTK在编译10A的target时报错:make: *** [mmi_feature_check]
MTK在编译10A的target时报错:make: *** [mmi_feature_check]
39 0
|
9月前
|
Unix Linux Shell
CMake深度解析:掌握add_custom_command,精通Makefile生成规则(三)
CMake深度解析:掌握add_custom_command,精通Makefile生成规则
2150 2
|
9月前
CMake中FindPackageHandleStandardArgs.cmake文件的作用和用法
CMake中FindPackageHandleStandardArgs.cmake文件的作用和用法
237 2