CMakeLists报告错误ld:找不到-l

问题描述 投票:0回答:1

CMakeLists.txt

cmake_minimum_required(VERSION 3.14)

project(testlib C)

set(CMAKE_C_STANDARD 99)


include_directories(/usr/local/include/)
find_library(iconv_lib iconv)
add_executable(testlib  library.c)
target_link_libraries(testlib libiconv.a)

$ ls / usr / local / include /

iconv.h  localcharset.h

报告错误

====================[ Build | testlib | Debug ]=================================
D:\.CLion2019.2\system\cygwin_cmake\bin\cmake.exe --build /cygdrive/d/project/c/testlib/cmake-build-debug --target testlib -- -j 4
Scanning dependencies of target testlib
[ 50%] Building C object CMakeFiles/testlib.dir/library.c.o
[100%] Linking C executable testlib.exe
/usr/lib/gcc/x86_64-pc-cygwin/7.4.0/../../../../x86_64-pc-cygwin/bin/ld: cannot find -liconv
collect2: error: ld returned 1 exit status
make[3]: *** [CMakeFiles/testlib.dir/build.make:84: testlib.exe] Error 1
make[2]: *** [CMakeFiles/Makefile2:76: CMakeFiles/testlib.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/testlib.dir/rule] Error 2
make: *** [Makefile:118: testlib] Error 2
c cmake clion
1个回答
0
投票
好像您没有使用find_library()所在的库,如果它确实被找到了。如果找不到该库,则可以添加搜索路径以告诉CMake在哪里可以找到该库:

find_library()

最后,使用在调用find_library(iconv_lib 
    NAMES iconv
    PATHS /path/containing/your/iconv/lib
)
时定义的iconv_lib变量,如下所示:

target_link_libraries()

© www.soinside.com 2019 - 2024. All rights reserved.