oF on Nvidia Jetson nano with QTCreator

Hello everyone,
since this is my first question in this forum, let me first begin to thank you those all of you who took time to develop/contribute and sustain such a good creative framework, I wanted to thank all of them. We can not thank you enough…
My question start with compilation of oF nightly build (latest one), and following the instruction from the following links


and

it compiled it without a hitch! it runs very nice (initially it was freezing with computer vision and video player examples) but after compiling OpenCV42 with cuda optimization, it runs really smooth…
My problem is setting up the qtcreator (version 4.5.2 installed from repo), after installation of qtcreator I run the install_template.sh script under scripts directory of oF then I launch qtcreator so that I can setup empty oF project and I created the oF project then tried to compile the project with qbs build kit in QTCreator (everything is default I did not change anything). It started compiling and then at linking stage there are a lot of undefined reference error happing on both debug and release version, but qbs set platform architecture linux64 in build kit (I dont know how to change!) but when I look at openframeworkscompiled/libs folder two folders presents: linux64 and linuxarmv7l (it is supposed to be just one folder which correspond to architecture correct?), under those folder linux64 is empty and linuxarmv7l contains libopenFrameworks.a libopenFrameworksDebug.a and directory, this road failed
then I tried to test with gnu make compilation:
when I typed
make Release -j4 it compile without any problem, I can run the application smooth
but if I type
make Debug -j4, during the linking process with a lot of error happening (mostly undefined reference (ofSetupOpenGL etc.)
I googled and search this and all other sources but I can not find and solution
to sum up:
Q1: How do I setup properly QTCreator so that I can compile and run debug my oF app on nano? I guess qbs build system makes wrong guess for platform architecture in QT Creator. When I delete linux64 folder, then when build debug version of the project it creates linux64 folder again…How do I rectify that? (tried to set PLATFORM_ARCH env variable did not work)
Q2: Why gnu make Debug linking is failing? (I guess it is related with the first one even though Release version compile without error
thank you in advance…

P.S. I am using of_v20200104_linuxarmv7l_release nightly build

Hi!
Welcome to the forum.

It might be that the openFrameworks.qbs file in the project has a bug in it.
Can you post the contents of that file?

You could also hardcode the of.platform variable to be linuxarmv7l on this line:

Also it could be useful to share the compile output of the Debug / Release builds in QBS if you still have errors?

BTW it should also work with the latest qteditor now.
It might even be worth trying a newer version if you continue to have issues.

Than you very much for your response, I followed your suggestion and hardcoded the of.platform to linuxarmv7l, here is the modified OpenFrameworks.qbs file per your request,
import qbs
import qbs.Process
import qbs.File
import qbs.FileInfo
import qbs.TextFile
import “modules/of/helpers.js” as Helpers

Product{
of.ofRoot: Helpers.normalize(FileInfo.joinPaths(path, “…/…/…/…”))
name: “openFrameworks”
type: “staticlibrary”
qbsSearchPaths: “.”

readonly property string projectDir: of.ofRoot + "/libs/openFrameworksCompiled/project"

// readonly property string libDir: of.ofRoot + “/libs/openFrameworksCompiled/lib/” + of.platform
readonly property string libDir: of.ofRoot + “/libs/openFrameworksCompiled/lib/linuxarmv7l”
readonly property bool isCoreLibrary: true
readonly property string platform: of.platform

// setting this variable to true will build OF using
// qbs instead of makefiles which helps catching errors...
// but will build on each application rebuild instead of in
// a common directory
readonly property bool qbsBuild: project.makeOF !== undefined ? !project.makeOF : false

Properties{
    condition: qbsBuild
    destinationDirectory: Helpers.normalize(FileInfo.joinPaths(path, "../../lib", project.platform))
}

Depends {
    name: "of"
}

cpp.includePaths: of.coreIncludePaths
cpp.defines: of.coreDefines
cpp.cxxStandardLibrary: of.coreCxxStandardLibrary
cpp.cxxLanguageVersion: of.coreCxxLanguageVersion
cpp.frameworks: of.coreFrameworks
cpp.cxxFlags: of.coreCxxFlags
cpp.cFlags: of.coreCFlags
cpp.warningLevel: of.coreWarningLevel
cpp.architecture: qbs.architecture

Properties{
    condition: qbs.targetOS.contains("android")
    cpp.sysroot: of.coreSysroot
}

Properties{
    condition: of.platform === "osx"
    cpp.minimumOsxVersion: "10.9"
}

property stringList FILES_EXCLUDE: {
    var excludes = [];
    if(qbs.targetOS.indexOf("linux")>-1){
        excludes = [
            "app/ofAppGlutWindow\\..*",
            "video/ofDirectShowPlayer\\..*",
            "video/ofDirectShowGrabber\\..*",
            "video/ofAVFoundationVideoPlayer\\..*",
            "video/ofAVFoundationVideoGrabber\\..*",
            "video/ofQuickTimePlayer\\..*",
            "video/ofQuickTimeGrabber\\..*",
            "video/ofQtUtils\\..*",
            "video/ofQTKit\\..*",
            "app/ofAppEGLWindow\\..*",
        ];
    }else if(qbs.targetOS.indexOf("windows")>-1){
        excludes = [
            "app/ofAppGlutWindow\\..*",
            "video/ofGstVideoPlayer\\..*",
            "video/ofGstVideoGrabber\\..*",
            "video/ofGstUtils\\..*",
            "video/ofAVFoundationVideoPlayer\\..*",
            "video/ofAVFoundationVideoGrabber\\..*",
            "video/ofQuickTimePlayer\\..*",
            "video/ofQuickTimeGrabber\\..*",
            "video/ofQtUtils\\..*",
            "video/ofQTKit\\..*",
            "app/ofAppEGLWindow\\..*",
        ];
    }else if(qbs.targetOS.indexOf("osx")>-1){
        excludes = [
            "app/ofAppGlutWindow.*",
            "video/ofGstVideoPlayer\\..*",
            "video/ofGstVideoGrabber\\..*",
            "video/ofGstUtils\\..*",
            "video/ofDirectShowPlayer\\..*",
            "video/ofDirectShowGrabber\\..*",
            "video/ofQuickTimePlayer\\..*",
            "video/ofQuickTimeGrabber\\..*",
            "video/ofQtUtils\\..*",
            "video/ofQTKit\\..*",
            "app/ofAppEGLWindow\\..*",
        ];
    }

    return excludes;
}

Probe {
    id: core_source
    property stringList files
    property string ofRoot: of.ofRoot
    property stringList FILES_EXCLUDE: parent.FILES_EXCLUDE
    configure: {
        var source = Helpers.findSourceRecursive(FileInfo.joinPaths(ofRoot, '/libs/openFrameworks'));
        var filteredSource = source.filter(function filterExcludes(path){
            for(exclude in FILES_EXCLUDE){
                var patt = new RegExp(FILES_EXCLUDE[exclude]);
                var match = patt.exec(path);
                if(match!=null){
                    return false;
                }
            }
            return true;
        });
        files = filteredSource;
        found = true;
    }
}

files: core_source.files

FileTagger {
    patterns: "*.c"
    priority: 100
    fileTags: {
        if(!product.qbsBuild){
            return ["filtered_sources"];
        }else{
            return ["c"];
        }
    }
}

FileTagger {
    patterns: "*.cpp"
    priority: 100
    fileTags: {
        if(!product.qbsBuild){
            return ["filtered_sources"];
        }else{
            return ["cpp"];
        }
    }
}

FileTagger {
    patterns: "*.h"
    priority: 100
    fileTags: {
        if(!product.qbsBuild){
            return ["filtered_sources"];
        }else{
            return ["hpp"];
        }
    }
}

FileTagger {
    patterns: "*.mm"
    priority: 100
    fileTags: {
        if(!product.qbsBuild){
            return ["filtered_sources"];
        }else{
            return ["objcpp"];
        }
    }
}

FileTagger {
    patterns: "*.m"
    priority: 100
    fileTags: {
        if(!product.qbsBuild){
            return ["filtered_sources"];
        }else{
            return ["objc"];
        }
    }
}

readonly property string make: {
    return "make";
}

Rule {
    condition: qbs.buildVariant.contains('debug') && !product.qbsBuild
    inputs: ["filtered_sources"]
    multiplex : true
    alwaysRun: false
    Artifact {
         filePath: Helpers.normalize(product.libDir + "/libopenFrameworksDebug.a")
         fileTags: "staticlibrary"
    }
    prepare: {
        var parameters = ['-j4', 'Debug'];
        if(product.platform==="msys2"){
            parameters.push('FIND='+Helpers.windowsToUnix(Helpers.findCommand()));
        }
        var qbsCmd = new Command(product.make, parameters);
        qbsCmd.description = "building openFrameworks library";
        qbsCmd.workingDirectory = product.projectDir;
        qbsCmd.silent = false;
        qbsCmd.highlight = 'compiler';
        if(project.useStdFs){
            qbsCmd.environment = ['OF_USING_STD_FS=1']
        }
        return [qbsCmd];
    }
}

Rule {
    condition: qbs.buildVariant.contains('release') && !product.qbsBuild
    inputs: ["filtered_sources"]
    multiplex : true
    alwaysRun: false
    Artifact {
         filePath: Helpers.normalize(product.libDir + "/libopenFrameworks.a")
         fileTags: "staticlibrary"
    }
    prepare: {
        var parameters = ['-j4', 'Release']
        if(product.platform==="msys2"){
            parameters.push('FIND='+Helpers.windowsToUnix(Helpers.findCommand()));
        }
        var qbsCmd = new Command(product.make, parameters);
        qbsCmd.description = "building openFrameworks library";
        qbsCmd.workingDirectory = product.projectDir;
        qbsCmd.silent = false;
        qbsCmd.highlight = 'compiler';
        if(project.useStdFs){
            qbsCmd.environment = ['OF_USING_STD_FS=1']
        }
        return [qbsCmd];
    }
}

}

then I tried to compile with hardcoded qbs files
it give the following output:

14:25:45: Running steps for project QTCreator…

building openFrameworks library

/usr/bin/make -j4 Release

Done!

linking QTCreator

/usr/bin/g++ -Wl,-fuse-ld=gold,-L/usr/local/lib -o /home/esarigul/Projects/QTCreator/bin/QTCreator /home/esarigul/Projects/build-QTCreator-Desktop-Release/qtc_Desktop_Release/QTCreator.967e3641/5a0f633e2e49792d/ofxCvColorImage.cpp.o /home/esarigul/Projects/build-QTCreator-Desktop-Release/qtc_Desktop_Release/QTCreator.967e3641/5a0f633e2e49792d/ofxCvContourFinder.cpp.o /home/esarigul/Projects/build-QTCreator-Desktop-Release/qtc_Desktop_Release/QTCreator.967e3641/5a0f633e2e49792d/ofxCvFloatImage.cpp.o /home/esarigul/Projects/build-QTCreator-Desktop-Release/qtc_Desktop_Release/QTCreator.967e3641/5a0f633e2e49792d/ofxCvGrayscaleImage.cpp.o /home/esarigul/Projects/build-QTCreator-Desktop-Release/qtc_Desktop_Release/QTCreator.967e3641/5a0f633e2e49792d/ofxCvHaarFinder.cpp.o /home/esarigul/Projects/build-QTCreator-Desktop-Release/qtc_Desktop_Release/QTCreator.967e3641/5a0f633e2e49792d/ofxCvImage.cpp.o /home/esarigul/Projects/build-QTCreator-Desktop-Release/qtc_Desktop_Release/QTCreator.967e3641/5a0f633e2e49792d/ofxCvShortImage.cpp.o /home/esarigul/Projects/build-QTCreator-Desktop-Release/qtc_Desktop_Release/QTCreator.967e3641/f27fede2220bcd32/main.cpp.o /home/esarigul/Projects/build-QTCreator-Desktop-Release/qtc_Desktop_Release/QTCreator.967e3641/f27fede2220bcd32/ofApp.cpp.o /home/esarigul/Projects/of_v20200104_linuxarmv7l_release/libs/openFrameworksCompiled/lib/linuxarmv7l/libopenFrameworks.a -lopencv_gapi -lopencv_stitching -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_cudabgsegm -lopencv_cudafeatures2d -lopencv_cudaobjdetect -lopencv_cudastereo -lopencv_dnn_objdetect -lopencv_dnn_superres -lopencv_dpm -lopencv_highgui -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_quality -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_cudacodec -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_videostab -lopencv_cudaoptflow -lopencv_optflow -lopencv_cudalegacy -lopencv_videoio -lopencv_cudawarping -lopencv_xfeatures2d -lopencv_shape -lopencv_ml -lopencv_ximgproc -lopencv_video -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_imgcodecs -lopencv_features2d -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_cudaimgproc -lopencv_cudafilters -lopencv_imgproc -lopencv_cudaarithm -lopencv_core -lopencv_cudev -lharfbuzz -lz -lgstapp-1.0 -lgstvideo-1.0 -lgstbase-1.0 -lgstreamer-1.0 -ludev -lfontconfig -lfreetype -lsndfile -lopenal -lGLEW -lGLU -lGL -lglfw -luriparser -lcurl -lrtaudio -lasound -lpulse-simple -lpulse -lmpg123 -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lglut -lX11 -lXrandr -lXxf86vm -lXi -lXcursor -lXinerama -ldl -lpthread -lfreeimage -lpugixml -lboost_filesystem -lboost_system

/home/esarigul/Projects/build-QTCreator-Desktop-Release/qtc_Desktop_Release/QTCreator.967e3641/5a0f633e2e49792d/ofxCvHaarFinder.cpp.o:ofxCvHaarFinder.cpp:function ofxCvHaarFinder::setup(std::__cxx11::basic_string<char, std::char_traits, std::allocator >): error: undefined reference to ‘cv::CascadeClassifier::load(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&)’

/home/esarigul/Projects/build-QTCreator-Desktop-Release/qtc_Desktop_Release/QTCreator.967e3641/5a0f633e2e49792d/ofxCvImage.cpp.o:ofxCvImage.cpp:function ofxCvImage::undistort(float, float, float, float, float, float, float, float): error: undefined reference to ‘cv::error(int, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, char const*, char const*, int)’

/home/esarigul/Projects/of_v20200104_linuxarmv7l_release/libs/openFrameworksCompiled/lib/linuxarmv7l/libopenFrameworks.a(ofTessellator.o):ofTessellator.cpp:function ofTessellator::~ofTessellator(): error: undefined reference to ‘tessDeleteTess’

/home/esarigul/Projects/of_v20200104_linuxarmv7l_release/libs/openFrameworksCompiled/lib/linuxarmv7l/libopenFrameworks.a(ofTessellator.o):ofTessellator.cpp:function ofTessellator::init(): error: undefined reference to ‘tessNewTess’

/home/esarigul/Projects/of_v20200104_linuxarmv7l_release/libs/openFrameworksCompiled/lib/linuxarmv7l/libopenFrameworks.a(ofTessellator.o):ofTessellator.cpp:function ofTessellator::operator=(ofTessellator const&): error: undefined reference to ‘tessDeleteTess’

/home/esarigul/Projects/of_v20200104_linuxarmv7l_release/libs/openFrameworksCompiled/lib/linuxarmv7l/libopenFrameworks.a(ofTessellator.o):ofTessellator.cpp:function ofTessellator::performTessellation(ofPolyWindingMode, ofMesh_<glm::vec<3, float, (glm::qualifier)0>, glm::vec<3, float, (glm::qualifier)0>, ofColor_, glm::vec<2, float, (glm::qualifier)0> >&, bool): error: undefined reference to ‘tessTesselate’

/home/esarigul/Projects/of_v20200104_linuxarmv7l_release/libs/openFrameworksCompiled/lib/linuxarmv7l/libopenFrameworks.a(ofTessellator.o):ofTessellator.cpp:function ofTessellator::performTessellation(ofPolyWindingMode, ofMesh_<glm::vec<3, float, (glm::qualifier)0>, glm::vec<3, float, (glm::qualifier)0>, ofColor_, glm::vec<2, float, (glm::qualifier)0> >&, bool): error: undefined reference to ‘tessGetVertexCount’

/home/esarigul/Projects/of_v20200104_linuxarmv7l_release/libs/openFrameworksCompiled/lib/linuxarmv7l/libopenFrameworks.a(ofTessellator.o):ofTessellator.cpp:function ofTessellator::performTessellation(ofPolyWindingMode, ofMesh_<glm::vec<3, float, (glm::qualifier)0>, glm::vec<3, float, (glm::qualifier)0>, ofColor_, glm::vec<2, float, (glm::qualifier)0> >&, bool): error: undefined reference to ‘tessGetElementCount’

/home/esarigul/Projects/of_v20200104_linuxarmv7l_release/libs/openFrameworksCompiled/lib/linuxarmv7l/libopenFrameworks.a(ofTessellator.o):ofTessellator.cpp:function ofTessellator::performTessellation(ofPolyWindingMode, ofMesh_<glm::vec<3, float, (glm::qualifier)0>, glm::vec<3, float, (glm::qualifier)0>, ofColor_, glm::vec<2, float, (glm::qualifier)0> >&, bool): error: undefined reference to ‘tessGetVertices’

/home/esarigul/Projects/of_v20200104_linuxarmv7l_release/libs/openFrameworksCompiled/lib/linuxarmv7l/libopenFrameworks.a(ofTessellator.o):ofTessellator.cpp:function ofTessellator::performTessellation(ofPolyWindingMode, ofMesh_<glm::vec<3, float, (glm::qualifier)0>, glm::vec<3, float, (glm::qualifier)0>, ofColor_, glm::vec<2, float, (glm::qualifier)0> >&, bool): error: undefined reference to ‘tessGetElements’

/home/esarigul/Projects/of_v20200104_linuxarmv7l_release/libs/openFrameworksCompiled/lib/linuxarmv7l/libopenFrameworks.a(ofTessellator.o):ofTessellator.cpp:function ofTessellator::tessellateToMesh(ofPolyline_<glm::vec<3, float, (glm::qualifier)0> > const&, ofPolyWindingMode, ofMesh_<glm::vec<3, float, (glm::qualifier)0>, glm::vec<3, float, (glm::qualifier)0>, ofColor_, glm::vec<2, float, (glm::qualifier)0> >&, bool): error: undefined reference to ‘tessAddContour’

/home/esarigul/Projects/of_v20200104_linuxarmv7l_release/libs/openFrameworksCompiled/lib/linuxarmv7l/libopenFrameworks.a(ofTessellator.o):ofTessellator.cpp:function ofTessellator::tessellateToMesh(std::vector<ofPolyline_<glm::vec<3, float, (glm::qualifier)0> >, std::allocator<ofPolyline_<glm::vec<3, float, (glm::qualifier)0> > > > const&, ofPolyWindingMode, ofMesh_<glm::vec<3, float, (glm::qualifier)0>, glm::vec<3, float, (glm::qualifier)0>, ofColor_, glm::vec<2, float, (glm::qualifier)0> >&, bool): error: undefined reference to ‘tessAddContour’

/home/esarigul/Projects/of_v20200104_linuxarmv7l_release/libs/openFrameworksCompiled/lib/linuxarmv7l/libopenFrameworks.a(ofTessellator.o):ofTessellator.cpp:function ofTessellator::performTessellation(ofPolyWindingMode, std::vector<ofPolyline_<glm::vec<3, float, (glm::qualifier)0> >, std::allocator<ofPolyline_<glm::vec<3, float, (glm::qualifier)0> > > >&, bool): error: undefined reference to ‘tessTesselate’

/home/esarigul/Projects/of_v20200104_linuxarmv7l_release/libs/openFrameworksCompiled/lib/linuxarmv7l/libopenFrameworks.a(ofTessellator.o):ofTessellator.cpp:function ofTessellator::performTessellation(ofPolyWindingMode, std::vector<ofPolyline_<glm::vec<3, float, (glm::qualifier)0> >, std::allocator<ofPolyline_<glm::vec<3, float, (glm::qualifier)0> > > >&, bool): error: undefined reference to ‘tessGetVertices’

/home/esarigul/Projects/of_v20200104_linuxarmv7l_release/libs/openFrameworksCompiled/lib/linuxarmv7l/libopenFrameworks.a(ofTessellator.o):ofTessellator.cpp:function ofTessellator::performTessellation(ofPolyWindingMode, std::vector<ofPolyline_<glm::vec<3, float, (glm::qualifier)0> >, std::allocator<ofPolyline_<glm::vec<3, float, (glm::qualifier)0> > > >&, bool): error: undefined reference to ‘tessGetElements’

/home/esarigul/Projects/of_v20200104_linuxarmv7l_release/libs/openFrameworksCompiled/lib/linuxarmv7l/libopenFrameworks.a(ofTessellator.o):ofTessellator.cpp:function ofTessellator::performTessellation(ofPolyWindingMode, std::vector<ofPolyline_<glm::vec<3, float, (glm::qualifier)0> >, std::allocator<ofPolyline_<glm::vec<3, float, (glm::qualifier)0> > > >&, bool): error: undefined reference to ‘tessGetElementCount’

/home/esarigul/Projects/of_v20200104_linuxarmv7l_release/libs/openFrameworksCompiled/lib/linuxarmv7l/libopenFrameworks.a(ofTessellator.o):ofTessellator.cpp:function ofTessellator::tessellateToPolylines(ofPolyline_<glm::vec<3, float, (glm::qualifier)0> > const&, ofPolyWindingMode, std::vector<ofPolyline_<glm::vec<3, float, (glm::qualifier)0> >, std::allocator<ofPolyline_<glm::vec<3, float, (glm::qualifier)0> > > >&, bool): error: undefined reference to ‘tessAddContour’

/home/esarigul/Projects/of_v20200104_linuxarmv7l_release/libs/openFrameworksCompiled/lib/linuxarmv7l/libopenFrameworks.a(ofTessellator.o):ofTessellator.cpp:function ofTessellator::tessellateToPolylines(std::vector<ofPolyline_<glm::vec<3, float, (glm::qualifier)0> >, std::allocator<ofPolyline_<glm::vec<3, float, (glm::qualifier)0> > > > const&, ofPolyWindingMode, std::vector<ofPolyline_<glm::vec<3, float, (glm::qualifier)0> >, std::allocator<ofPolyline_<glm::vec<3, float, (glm::qualifier)0> > > >&, bool): error: undefined reference to ‘tessAddContour’

/home/esarigul/Projects/of_v20200104_linuxarmv7l_release/libs/openFrameworksCompiled/lib/linuxarmv7l/libopenFrameworks.a(ofOpenALSoundPlayer.o):ofOpenALSoundPlayer.cpp:function ofOpenALSoundPlayer::initFFT(int): error: undefined reference to ‘kiss_fftr_alloc’

/home/esarigul/Projects/of_v20200104_linuxarmv7l_release/libs/openFrameworksCompiled/lib/linuxarmv7l/libopenFrameworks.a(ofOpenALSoundPlayer.o):ofOpenALSoundPlayer.cpp:function ofOpenALSoundPlayer::initSystemFFT(int): error: undefined reference to ‘kiss_fftr_alloc’

/home/esarigul/Projects/of_v20200104_linuxarmv7l_release/libs/openFrameworksCompiled/lib/linuxarmv7l/libopenFrameworks.a(ofOpenALSoundPlayer.o):ofOpenALSoundPlayer.cpp:function ofOpenALSoundPlayer::getSpectrum(int): error: undefined reference to ‘kiss_fftr’

/home/esarigul/Projects/of_v20200104_linuxarmv7l_release/libs/openFrameworksCompiled/lib/linuxarmv7l/libopenFrameworks.a(ofOpenALSoundPlayer.o):ofOpenALSoundPlayer.cpp:function ofOpenALSoundPlayer::getSystemSpectrum(int): error: undefined reference to ‘kiss_fftr’

collect2: error: ld returned 1 exit status

Process failed with exit code 1.

The following products could not be built for configuration qtc_Desktop_Release:

QTCreator

Error while building/deploying project QTCreator (kit: Desktop)

The kit Desktop has configuration issues which might be the root cause for this problem.

When executing step “Qbs Build”

14:25:49: Elapsed time: 00:05.

but still I dont understand why gnu make Debug -j4 produce error when I try to compile with debug info outside of qtcreator…

thanks again for your time and effort

I tried to upload qbs file as whole, the page does not let me top upload it says file type is not authorized, new user can not upload as well when I try zip form

It looks like you are missing linking for libtess and kiss.
It sounds like you did add this step right?

Recompile with New Configs

Next, we need to recompile and build the kiss and tess2 libraries with these modified settings. You can download oF's apothecary tool to recompile the libraries:

> git clone https://github.com/openframeworks/apothecary.git
> cd apothecary/apothecary
> ./apothecary -t linux download kiss
> ./apothecary -t linux prepare kiss
> ./apothecary -t linux build kiss
> ./apothecary -t linux download tess2
> ./apothecary -t linux prepare tess2
> ./apothecary -t linux build tess2
Replace oF's kiss and tess2 libraries with these newly created static libraries:

> cd ~
> sudo cp apothecary/apothecary/build/kiss/lib/linux/libkiss.a of_v20190324_linuxarmv7l_release/libs/kiss/lib/linuxarmv7l/
> sudo cp apothecary/apothecary/build/tess2_patched/build/libtess2.a of_v20190324_linuxarmv7l_release/libs/tess2/lib/linuxarmv7l/
You can also just download the libs libkiss.a and libtess.a that Jason von Cleave properly recompiled.

It might be that you are missing the linker flags for those two libraries for your QBS project as you say its working via make and command line.

I am not super familiar with qtcreator but if you can add those two libraries to your linker it should build and run for you.

I meant outside of the make compiling system is broken issuing:
make Debug -j4 generates linking errors but make Release -j4 does not.
Qtcreator qbs file definitely has some error with link stage…

I did those steps as well, if they were missing it would not compile release version with gnu make if kiss and tess2 files are not present
correct?
Update: I checked those location, static libraries are present: libtess2.a, libkiss.a

take care

I looked at apothecarry utility it seems it has two versions -t parameter, should it be -t linux64 instead of -t linux when building kiss2 and tess2 libs?
Since nano runs on 64 bit linux I am asking this…

yes I think -t linux64 should be the right one.

I tried -t linux64 it generates identical static libraries, I guess kiss and tess2 libraries are fine, I guess just like creating RASPBERRY_PI arch platform in oF, JETSON_NANO platform creation and make file building process is necessary.