当我使用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
问题描述
这是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屋!