操作系统:Windows10
集成开发环境:CLion
CMake:3.15
编译环境:MinGW11.2
Qt:6.4
问题描述:每一个子模块都可以build成功,但是最后链接成可执行文件的时候出现报错
“D:/Qt/Tools/mingw1120_64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -llogscreen
collect2.exe: error: ld returned 1 exit status
mingw32-make.exe[3]: *** [src\CMakeFiles\cMakeLearn.dir\build.make:374: src/cMakeLearn.exe] Error 1
mingw32-make.exe[2]: *** [CMakeFiles\Makefile2:432: src/CMakeFiles/cMakeLearn.dir/all] Error 2
mingw32-make.exe[1]: *** [CMakeFiles\Makefile2:439: src/CMakeFiles/cMakeLearn.dir/rule] Error 2
mingw32-make.exe: *** [Makefile:137: cMakeLearn] Error 2”
这不是找不到动态库吗,cmake配置下路径
不知道你这个问题是否已经解决, 如果还没有解决的话:解决方案:
1.检查是否在CMakeLists.txt文件中正确设置了链接库,例如:
target_link_libraries(cMakeLearn PRIVATE Qt6::Core Qt6::Gui Qt6::Widgets logscreen )
其中logscreen为需要链接的动态库名称。
2.检查库文件是否已经正确生成且位于正确的目录下。可以在CMakeLists.txt文件中添加以下代码:
message(STATUS "Library path: ${YOUR_LIBRARY_PATH}") link_directories(${YOUR_LIBRARY_PATH})
其中YOUR_LIBRARY_PATH为库文件所在的路径。通过这个方法,可以在编译时检查库文件是否被正确找到。如果报错,则需要检查库文件是否放在正确的位置。
3.手动设置库文件路径。在CMakeLists.txt文件中添加以下代码:
link_directories(${CMAKE_SOURCE_DIR}/libs/logscreen)
其中${CMAKE_SOURCE_DIR}/libs/logscreen为库文件所在的完整路径。
4.手动添加库文件。将库文件复制到项目文件夹的libs文件夹中,并在CMakeLists.txt文件中添加以下代码:
add_library(logscreen SHARED IMPORTED) set_target_properties(logscreen PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libs/logscreen/liblogscreen.dll)
其中${CMAKE_SOURCE_DIR}/libs/logscreen/liblogscreen.dll为库文件的完整路径。
注意:以上方法是针对Windows平台,如果在其他系统上使用,需要根据实际情况进行修改。