当我使用Cmake编译文件时,它显示/ usr / bin / ld:找不到-ltest。但是当我使用g ++编译文件,它是确定 [英] When I use Cmake to compile the file, it shows /usr/bin/ld: cannot find -ltest. However when I use g++ to compile the file, it is ok

查看:2503
本文介绍了当我使用Cmake编译文件时,它显示/ usr / bin / ld:找不到-ltest。但是当我使用g ++编译文件,它是确定的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是src目录下的CMakeList.txt:

This is the CMakeList.txt in src directory:


ADD_EXECUTABLE(Expression ExpressionValue.cpp)
INCLUDE_DIRECTORIES / fengwu / codes / headfiles / expression / include)
LINK_DIRECTORIES(/ root / fengwu / codes / headfiles / expression / lib)
TARGET_LINK_LIBRARIES(表达式测试)

ADD_EXECUTABLE(Expression ExpressionValue.cpp) INCLUDE_DIRECTORIES(/root/fengwu/codes/headfiles/expression/include) LINK_DIRECTORIES(/root/fengwu/codes/headfiles/expression/lib) TARGET_LINK_LIBRARIES(Expression test)

当我在构建目录中输入 cmake .. 时,就可以了。之后,我输入 make ,它显示 / usr / bin / ld:找不到-ltest 。但是当我使用g ++时,它是确定。

When I enter cmake .. in build directory, it is ok. After that I enter make, it shows /usr/bin/ld: cannot find -ltest. However when I use g++, it is ok.


g ++ ExpressionValue.cpp
-I / root / fengwu / codes / headfiles / expression / include -L / root / fengwu / codes / headfiles / expression / lib -ltest -o expr.out

g++ ExpressionValue.cpp -I/root/fengwu/codes/headfiles/expression/include -L/root/fengwu/codes/headfiles/expression/lib -ltest -o expr.out


推荐答案

link_directories 的文档:


此命令仅适用于在调用后创建的目标。

The command will apply only to targets created after it is called.

对于make link_directories()调用工作,您需要在之前 add_executable )

For make link_directories() call work you need to move it before add_executable().

这篇关于当我使用Cmake编译文件时,它显示/ usr / bin / ld:找不到-ltest。但是当我使用g ++编译文件,它是确定的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆