How to Use OpenVPN3 Libraryi With CMAKE ?
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 1.2k
- Forks
- 467
- PR merge metrics
- No merged PRs in 30d
Description
Hello, I am trying to use Qt6 and OpenVPN3 as libraries for some of my experiments, but I have not been able to make any progress for 2-3 days. Can you tell me where I made a mistake?
First of all, I managed to download the project and build it successfully.
Here's my compile output. Compile all good
demoo@pardus:~/qtproc/Test/3rd$ git clone https://github.com/OpenVPN/openvpn3.git
Cloning into 'openvpn3'...
remote: Enumerating objects: 35895, done.
remote: Counting objects: 100% (10075/10075), done.
remote: Compressing objects: 100% (1781/1781), done.
remote: Total 35895 (delta 8416), reused 9572 (delta 8216), pack-reused 25820
Receiving objects: 100% (35895/35895), 9.44 MiB | 2.37 MiB/s, done.
Resolving deltas: 100% (25969/25969), done.
demoo@pardus:~/qtproc/Test/3rd$ cd openvpn3 && mkdir build && cd build
demoo@pardus:~/qtproc/Test/3rd/openvpn3/build$ cmake -GNinja ..
-- The C compiler identification is GNU 12.2.0
-- The CXX compiler identification is GNU 12.2.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Python3: /usr/bin/python3 (found version "3.11.2") found components: Interpreter Development Development.Module Development.Embed
-- Found SWIG: /usr/bin/swig4.0 (found suitable version "4.1.0", minimum required is "3.0")
-- Found asio: /usr/include
-- Found lz4: /usr/lib/x86_64-linux-gnu/liblz4.so
-- Found OpenSSL: /usr/lib/x86_64-linux-gnu/libcrypto.so (found version "3.0.11")
-- Configuring done
-- Generating done
-- Build files have been written to: /home/demoo/qtproc/Test/3rd/openvpn3/build/test/unittests/googletest-download
[1/9] Creating directories for 'googletest'
[2/9] Performing download step (git clone) for 'googletest'
Cloning into 'googletest-src'...
HEAD is now at f8d7d77c Bump version to v1.14 in preparation for release
[3/9] Performing update step for 'googletest'
[4/9] No patch step for 'googletest'
[5/9] No configure step for 'googletest'
[6/9] No build step for 'googletest'
[7/9] No install step for 'googletest'
[8/9] No test step for 'googletest'
[9/9] Completed 'googletest'
-- Found Python3: /usr/bin/python3 (found version "3.11.2") found components: Interpreter
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Found xxHash: /usr/include
-- Found LZO: /usr/lib/x86_64-linux-gnu/liblzo2.so
lzo found, running lzo compression tests
-- Configuring done
-- Generating done
-- Build files have been written to: /home/demoo/qtproc/Test/3rd/openvpn3/build
demoo@pardus:~/qtproc/Test/3rd/openvpn3/build$ cmake --build .
[1/80] Swig compile ovpncli.i for python
/home/demoo/qtproc/Test/3rd/openvpn3/client/ovpncli.hpp:760: Warning 473: Returning a pointer or reference in a director method is not recommended.
[80/80] Linking CXX executable test/ovpncli/ovpncli
demoo@pardus:~/qtproc/Test/3rd/openvpn3/build$
My project CMakeList.txt
cmake_minimum_required(VERSION 3.16)
project(Test VERSION 0.1 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Qt6 6.4 REQUIRED COMPONENTS Quick)
add_subdirectory(3rd/openvpn3) # Here
include_directories(3rd/openvpn3) # Here 1
qt_standard_project_setup()
qt_add_executable(appTest
main.cpp
)
qt_add_qml_module(appTest
URI Test
VERSION 1.0
QML_FILES
Main.qml
)
# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.
# If you are developing for iOS or macOS you should consider setting an
# explicit, fixed bundle identifier manually though.
set_target_properties(appTest PROPERTIES
# MACOSX_BUNDLE_GUI_IDENTIFIER com.example.appTest
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
MACOSX_BUNDLE TRUE
WIN32_EXECUTABLE TRUE
)
target_link_libraries(appTest
PRIVATE Qt6::Quick
)
include(GNUInstallDirs)
install(TARGETS appTest
BUNDLE DESTINATION .
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
My project main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include "3rd/openvpn3/client/ovpncli.hpp" // Here1
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
const QUrl url(QStringLiteral("qrc:/Test/Main.qml"));
QObject::connect(
&engine,
&QQmlApplicationEngine::objectCreationFailed,
&app,
[]() { QCoreApplication::exit(-1); },
Qt::QueuedConnection);
engine.load(url);
return app.exec();
}
This is the error I get when I try to build my project.
I couldn't find an example on exactly how to use this library. There are a few open source projects, but CMakeList files are very complex. Can you help me?
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the project's CMake configuration and client/ovpncli.hpp, then compare the generated OpenVPN3 targets with the Qt6 project shown in the issue. Done means a documented Qt6 consumer example can configure, compile, and link against OpenVPN3.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cmake, cpp
- Domain
- build-system, documentation
- Issue type
- Documentation
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100