Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support Ubuntu 22.04 #347

Open
imlegend19 opened this issue Jan 10, 2023 · 1 comment
Open

Support Ubuntu 22.04 #347

imlegend19 opened this issue Jan 10, 2023 · 1 comment
Assignees
Labels
build CMake build system enhancement library Development interface and library
Milestone

Comments

@imlegend19
Copy link

Hi, I am facing issues in executing the example scripts. I also want to make changes to the NFIQ2 codebase for a custom requirement but was not able to successfully setup the code on Ubuntu 22.04 (Tried on CLion & VSCode).

Steps to reproduce the issue:

  1. Install https://github.com/usnistgov/NFIQ2/releases/download/v2.2.0/nfiq2-dev_2.2.0-1_amd64.deb.
  2. Create a new C++ project. CMakeLists.txt as follows (ref):
CMakeLists.txt
cmake_minimum_required(VERSION 3.24)

project(Test)

set(CMAKE_CXX_STANDARD 17)

set(NFIQ2_INSTALL_DIR /usr/local/nfiq2/lib)
include_directories(/usr/local/nfiq2/include)

set(REQUIRED_LIBS "")

find_library(LIBNFIQ2_STATIC
        ${CMAKE_STATIC_LIBRARY_PREFIX}nfiq2${CMAKE_STATIC_LIBRARY_SUFFIX}
        PATHS ${NFIQ2_INSTALL_DIR}
        REQUIRED)
find_library(LIBOPENCV_CORE_STATIC
        ${CMAKE_STATIC_LIBRARY_PREFIX}opencv_core${CMAKE_STATIC_LIBRARY_SUFFIX}
        PATHS ${NFIQ2_INSTALL_DIR}
        REQUIRED)
find_library(LIBOPENCV_IMGPROC_STATIC
        ${CMAKE_STATIC_LIBRARY_PREFIX}opencv_imgproc${CMAKE_STATIC_LIBRARY_SUFFIX}
        PATHS ${NFIQ2_INSTALL_DIR}
        REQ0UIRED)
find_library(LIBOPENCV_ML_STATIC
        ${CMAKE_STATIC_LIBRARY_PREFIX}opencv_ml${CMAKE_STATIC_LIBRARY_SUFFIX}
        PATHS ${NFIQ2_INSTALL_DIR}
        REQ0UIRED)
find_library(LIBFRFXLL_STATIC
        ${CMAKE_STATIC_LIBRARY_PREFIX}FRFXLL_static${CMAKE_STATIC_LIBRARY_SUFFIX}
        PATHS ${NFIQ2_INSTALL_DIR}
        REQUIRED)
find_library(LIBNFIR_STATIC
        ${CMAKE_STATIC_LIBRARY_PREFIX}nfir${CMAKE_STATIC_LIBRARY_SUFFIX}
        PATHS ${NFIQ2_INSTALL_DIR}
        REQUIRED)

list(APPEND REQUIRED_LIBS
        ${LIBNFIQ2_STATIC}
        ${LIBOPENCV_CORE_STATIC}
        ${LIBOPENCV_IMGPROC_STATIC}
        ${LIBOPENCV_ML_STATIC}
        ${LIBFRFXLL_STATIC}
        ${LIBNFIR_STATIC})

set(ALL_TARGETS "")

add_executable(main main.cpp)
target_link_libraries(main ${REQUIRED_LIBS})
set_target_properties(main PROPERTIES
        MACOSX_RPATH YES
        CXX_STANDARD 11
        CXX_STANDARD_REQUIRED YES
        CXX_EXTENSIONS NO)
list(APPEND ALL_TARGETS main)
  1. Create main.cpp:
#include <nfiq2.hpp>

#include <iostream>

int main() {
    std::cout << "NFIQ 2 Features:\n";
    for (const auto &features:
            NFIQ2::QualityFeatures::getQualityFeatureIDs()) {
        std::cout << " * " << features << '\n';
    }

    return (EXIT_SUCCESS);
}

I am getting this error on building main.cpp.

Ideally I want to install NFIQ2 from source to make the changes in the code. I followed the exact steps mentioned in the README.md but no luck. CLion does not index the header files.

OS information

  • OS: Ubuntu
  • Version: 22.04

Library information

  • C++ library
  • Static library
@imlegend19 imlegend19 added bug library Development interface and library labels Jan 10, 2023
@gfiumara
Copy link
Member

The .deb file you linked to is built for Ubuntu 20.04, not 22.04. The static libs in the package are likely relying on symbols from system libraries that are not present in 22.02. We'd need to rebuild and repackage for 22.04. I do not have hardware to perform the required large-scale regression test on 22.04 amd64 or arm64 at this time, but I can confirm this compiles cleanly following the instructions in the README and runs the conformance test successfully on 22.04.

I can't comment on how successful you can be with CLion with the NFIQ2's current CMake config. Improvements there are noted in other issues (e.g., #122). However, you can follow the example from the examples/ dir, resetting NFIQ2_INSTALL_DIR for where you built NFIQ2. For example, cmake -DNFIQ2_INSTALL_DIR=<# PATH_TO_CMAKE_BUILD_DIR #>/install_staging/nfiq2 .. && make.

I'll update this issue to support 22.04.

@gfiumara gfiumara added enhancement build CMake build system and removed bug labels Jan 10, 2023
@gfiumara gfiumara changed the title Error during installation [Ubuntu 22.04] Support Ubuntu 22.04 Jan 10, 2023
@gfiumara gfiumara added this to the NFIQ 2.3.0 milestone Mar 8, 2024
@gfiumara gfiumara self-assigned this Mar 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
build CMake build system enhancement library Development interface and library
Projects
None yet
Development

No branches or pull requests

2 participants