How to link an external library in Qt Creator when LIBS += -L“…” and -l don't seem to work?
-
@SGaist Sure. There you go:
QT += gui QT += xml CONFIG += c++11 console CONFIG -= app_bundle # The following define makes your compiler emit warnings if you use # any feature of Qt which as been marked deprecated (the exact warnings # depend on your compiler). Please consult the documentation of the # deprecated API in order to know how to port your code away from it. DEFINES += QT_DEPRECATED_WARNINGS # You can also make your code fail to compile if you use deprecated APIs. # In order to do so, uncomment the following line. # You can also select to disable deprecated APIs only up to a certain version of Qt. DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 QMAKE_CXXFLAGS += -msse2 QMAKE_CXXFLAGS += -fopenmp LIBS += -fopenmp LIBS += -L"/home/Warrior/Desktop/pathtracer/oidn/build/" -lOpenImageDenoise SOURCES += main.cpp \ pathtracer.cpp \ scene/scene.cpp \ BVH/BBox.cpp \ BVH/BVH.cpp \ scene/camera.cpp \ scene/basiccamera.cpp \ util/CS123XmlSceneParser.cpp \ scene/shape/mesh.cpp \ scene/shape/triangle.cpp HEADERS += \ pathtracer.h \ scene/scene.h \ BVH/BBox.h \ BVH/BVH.h \ BVH/IntersectionInfo.h \ BVH/Log.h \ BVH/Object.h \ BVH/Ray.h \ BVH/Stopwatch.h \ scene/camera.h \ scene/basiccamera.h \ util/CS123Common.h \ util/CS123ISceneParser.h \ util/CS123SceneData.h \ util/CS123XmlSceneParser.h \ scene/shape/Sphere.h \ scene/shape/mesh.h \ scene/shape/triangle.h \ util/tiny_obj_loader.h \ BVH/vector3.h \ oidn/include/OpenImageDenoise/oidn.hpp \ oidn/include/OpenImageDenoise/config.h \ oidn/build/mkl-dnn/include/dnnl_config.h \ INCLUDEPATH += "Eigen/" INCLUDEPATH += "oidn/include/OpenImageDenoise" INCLUDEPATH += "oidn/build/mkl-dnn/include/" INCLUDEPATH += "/oidn/build/" DISTFILES += \ README.txt
-
That is looking good...
Did you do a full rebuild after modifying these paths ?
Also, did you check that all the symlinks of libOpenImageDenoise are valid and pointing to valid files ? -
@Warrior said in How to link an external library in Qt Creator when LIBS += -L“…” and -l don't seem to work?:
How can I do that?
ls -lh /home/Warrior/Desktop/pathtracer/oidn/build/
What is the output of this command?
-
@jsulm Apparently the files don't show up. Could it be because I cloned and built oidn in another directory first and then moved everything to the path where my program is? or is there a way to fix the symlink issue?
ls -lh /home/Warrior/Desktop/pathtracer/oidn/build/ total 160K drwxrwxr-x 4 Warrior Warrior 4.0K Feb 4 00:09 apps -rw-rw-r-- 1 Warrior Warrior 19K Feb 4 00:09 CMakeCache.txt drwxrwxr-x 7 Warrior Warrior 4.0K Feb 4 00:09 CMakeFiles -rw-rw-r-- 1 Warrior Warrior 6.5K Feb 4 00:09 cmake_install.cmake drwxrwxr-x 3 Warrior Warrior 4.0K Feb 4 00:09 common -rw-r--r-- 1 Warrior Warrior 3.6K Feb 4 00:09 CPackConfig.cmake -rw-r--r-- 1 Warrior Warrior 4.0K Feb 4 00:09 CPackSourceConfig.cmake -rw-rw-r-- 1 Warrior Warrior 103K Feb 4 00:09 Makefile drwxrwxr-x 3 Warrior Warrior 4.0K Feb 4 00:08 mkl-dnn -rw-r--r-- 1 Warrior Warrior 1.6K Feb 4 00:09 OpenImageDenoiseConfigVersion.cmake
-
@Warrior said in How to link an external library in Qt Creator when LIBS += -L“…” and -l don't seem to work?:
or is there a way to fix the symlink issue?
Your current issue is not related to sym-links. Your problem is that the folder you pass via -L does NOT contain the libs. Either put them back to this folder or pass the folder containing the libs via -L.
-
@Warrior
Well you can see for yourself that the listing fromls
does not match the files/directories in your screenshot.My guess is that screenshot does not come from navigating to the same directory. (A screenshot from file manager without proof of what directory is showing is not much use.) So you need to look closely to sort this out....
-
@JonB I totally understand the suspicious discrepancy between the screen shot and the directory listing but I am not trying to be funny and take people's time. They're both from the same path. I think I need to clone the oidn repo in the same directory where my code is and build it there. That can hopefully solve the problem.
-
@Warrior said in How to link an external library in Qt Creator when LIBS += -L“…” and -l don't seem to work?:
They're both from the same path.
No matter what you tell us - no they're not from the same path. Make sure you use the right one and think about e.g. case sensitivity.
-
@SGaist @JonB @jsulm @Christian-Ehrlicher Thank you all. I finally managed to fix the issue. I cloned the repo in the same directory where my code is and built it there. Here's what
ls -lh /home/Warrior/Desktop/pathtracer/oidn/build
shows me now and I can successfully build my code and run it. I cannot believe that things didn't work the first time and symlinks were incorrect/missing:total 51M drwxrwxr-x 4 Warrior Warrior 4.0K Feb 9 10:14 apps -rw-rw-r-- 1 Warrior Warrior 19K Feb 9 10:14 CMakeCache.txt drwxrwxr-x 7 Warrior Warrior 4.0K Feb 9 10:19 CMakeFiles -rw-rw-r-- 1 Warrior Warrior 5.6K Feb 9 10:14 cmake_install.cmake -rw-rw-r-- 1 Warrior Warrior 2.5K Feb 9 10:17 color_ispc_avx2.h -rw-rw-r-- 1 Warrior Warrior 2.5K Feb 9 10:17 color_ispc_avx512skx.h -rw-rw-r-- 1 Warrior Warrior 3.1K Feb 9 10:17 color_ispc.h -rw-rw-r-- 1 Warrior Warrior 2.5K Feb 9 10:17 color_ispc_sse4.h drwxrwxr-x 3 Warrior Warrior 4.0K Feb 9 10:14 common -rw-r--r-- 1 Warrior Warrior 3.3K Feb 9 10:14 CPackConfig.cmake -rw-r--r-- 1 Warrior Warrior 3.7K Feb 9 10:14 CPackSourceConfig.cmake -rw-rw-r-- 1 Warrior Warrior 2.6K Feb 9 10:17 input_reorder_ispc_avx2.h -rw-rw-r-- 1 Warrior Warrior 2.6K Feb 9 10:17 input_reorder_ispc_avx512skx.h -rw-rw-r-- 1 Warrior Warrior 3.1K Feb 9 10:17 input_reorder_ispc.h -rw-rw-r-- 1 Warrior Warrior 2.6K Feb 9 10:17 input_reorder_ispc_sse4.h -rw-rw-r-- 1 Warrior Warrior 41K Feb 9 10:14 libcommon.a -rw-rw-r-- 1 Warrior Warrior 16M Feb 9 10:17 libdnnl.a lrwxrwxrwx 1 Warrior Warrior 24 Feb 9 10:19 libOpenImageDenoise.so -> libOpenImageDenoise.so.0 lrwxrwxrwx 1 Warrior Warrior 28 Feb 9 10:19 libOpenImageDenoise.so.0 -> libOpenImageDenoise.so.1.3.0 -rwxrwxr-x 1 Warrior Warrior 34M Feb 9 10:19 libOpenImageDenoise.so.1.3.0 -rw-rw-r-- 1 Warrior Warrior 37K Feb 9 10:19 libutils.a drwxrwxr-x 2 Warrior Warrior 4.0K Feb 9 10:17 local__core -rw-rw-r-- 1 Warrior Warrior 104K Feb 9 10:14 Makefile drwxrwxr-x 3 Warrior Warrior 4.0K Feb 9 10:14 mkl-dnn -rwxrwxr-x 1 Warrior Warrior 181K Feb 9 10:19 oidnBenchmark -rwxrwxr-x 1 Warrior Warrior 59K Feb 9 10:19 oidnDenoise -rwxrwxr-x 1 Warrior Warrior 882K Feb 9 10:19 oidnTest -rw-r--r-- 1 Warrior Warrior 1.6K Feb 9 10:14 OpenImageDenoiseConfigVersion.cmake -rw-rw-r-- 1 Warrior Warrior 1.5K Feb 9 10:17 output_copy_ispc_avx2.h -rw-rw-r-- 1 Warrior Warrior 1.5K Feb 9 10:17 output_copy_ispc_avx512skx.h -rw-rw-r-- 1 Warrior Warrior 1.9K Feb 9 10:17 output_copy_ispc.h -rw-rw-r-- 1 Warrior Warrior 1.5K Feb 9 10:17 output_copy_ispc_sse4.h -rw-rw-r-- 1 Warrior Warrior 2.5K Feb 9 10:17 output_reorder_ispc_avx2.h -rw-rw-r-- 1 Warrior Warrior 2.5K Feb 9 10:17 output_reorder_ispc_avx512skx.h -rw-rw-r-- 1 Warrior Warrior 3.1K Feb 9 10:17 output_reorder_ispc.h -rw-rw-r-- 1 Warrior Warrior 2.5K Feb 9 10:17 output_reorder_ispc_sse4.h -rw-rw-r-- 1 Warrior Warrior 1.5K Feb 9 10:17 upsample_ispc_avx2.h -rw-rw-r-- 1 Warrior Warrior 1.5K Feb 9 10:17 upsample_ispc_avx512skx.h -rw-rw-r-- 1 Warrior Warrior 1.8K Feb 9 10:17 upsample_ispc.h -rw-rw-r-- 1 Warrior Warrior 1.5K Feb 9 10:17 upsample_ispc_sse4.h drwxrwxr-x 2 Warrior Warrior 4.0K Feb 9 10:17 weights
-
@Warrior said in How to link an external library in Qt Creator when LIBS += -L“…” and -l don't seem to work?:
I finally managed to fix the issue
so please don't forget to mark your post as solved!
-
QMAKE_LFLAGS += "-Wl,-rpath,\'/home/Warrior/Desktop/pathtracer/oidn/build\'"