make的link_directories命令不起作用

摘要:
按照《CMakePractice》中第六章的设置,采用include_directories命令去寻找共享库的路径,src/CMakeLists.txt如下:ADD_EXECUTABLE(mainmain.c)INCLUDE_DIRECTORIES(/tmp/include/hello)LINK_DIRECTORIES(/tmp/lib/)TARGET_LINK_LIBRARIES(mainlib

按照《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})

这下可以编译通过了。

免责声明:文章转载自《make的link_directories命令不起作用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Java 泛型小结python 30 进程之间的相互独立、进程之间的时间差下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

iview中modal如何修改标题颜色

modal默认设置transfer属性为true,然后整个弹窗就在body的下一层,所以样式修改失败,直接设置为false就可以修改样式了修改标题颜色,当然设置transfer为false后也可以修改modal中的其他样式:.ivu-modal-header-inner{color:#ba9759;}...

小米路由器3-R3 刷固件

3-3、大功告成,实测:带机12台,内存占用100MB、CPU使用20%不到满载200M带宽。...

将Kafka收到的数据传入到redis中

首先,配置配置。在属性测试中,首先启动网络管理系统(GateWay),然后启动终端(TBox),然后运行KafkaTest启动TBox。在启动测试中可以看到收到的数据。然后关键是sdf,然后去你的xshell启动动物园管理员、kafka和redis...

IPI 通信(SMP)【转】

在MIPS架构下的IPI通信被关闭和中断后,IPIMIPS接口结构平台也将被发送_ smp_Ops{void;void;…}IPI通信是多个处理器之间的通信。send_ ipi_Single:一对一聊天send_ ipi_Mask:Mask posting,Mask表示Mask posting/*Octeon Tellanothercore of Lushi...

CorelDRAW 编写和运行宏指令

在开发和运行CorelDRAW宏之前,必须安装VBA组件。在CoerlDRAW11和12中安装CorelDRAWVBAVBA是典型安装的一部分。2如果安装开始,请单击安装CorelDRAW12 Graphics Suite。CorelDRAWVBA工具栏CorelDRaw工具栏提供了几个快速的VBA函数和对VB编辑器的访问。但是,您可以通过在CorelDRA...

四、使用ADB命令清除缓存

1、 ADBShell应用程序查看目录结构:adbshells查看系统当前日期:adbselldate查看系统CPU使用情况:adbsHELcat/proc/cpuinfo查看系统内存使用情况:adbshellcat/proc/meminfo显示所有应用程序:adbshelpmlistpackages显示系统自带的应用程序:adshellpmlistpack...