diff options
author | Dan Vrátil <dvratil@redhat.com> | 2015-03-30 17:49:26 +0200 |
---|---|---|
committer | Dan Vrátil <dvratil@redhat.com> | 2015-03-30 17:49:28 +0200 |
commit | 8f2fed8d2a1b23a8f318047b6592ad64b6ecbd22 (patch) | |
tree | 6f8d5ea2dc8695dfc6c3c641c2ef044ad5810bd8 /async/src/CMakeLists.txt | |
parent | 1d946c166cc7a4a2556e8bfaab7dc66695b555e1 (diff) | |
download | sink-8f2fed8d2a1b23a8f318047b6592ad64b6ecbd22.tar.gz sink-8f2fed8d2a1b23a8f318047b6592ad64b6ecbd22.zip |
Async: initial support for native chaining of KJobs
It is now possible use KJob-derived jobs with libasync without having to write
lambda wrappers.
auto job = Async::start<ReturnType, MyKJob, MyKJob::result, Args ...)
.then<ReturnType, OtherKJob, OtherKJob::result, PrevKJobReturnType>();
job.exec(arg1, arg2, ...);
The reason for this approach (instead of taking KJob* as an argument is that
we usually want the KJob ctor arguments to depend on result of previous job.
At least in case of Async::start() however it makes sense to support passing
KJob* as an argument (not yet implemented).
In future we should also support custom error handlers.
The KJob integration is build-time optional, but enabled by default (pass
-DWITH_KJOB=FALSE to CMake to disable).
Adds KCoreAddons dependency.
Diffstat (limited to 'async/src/CMakeLists.txt')
-rw-r--r-- | async/src/CMakeLists.txt | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/async/src/CMakeLists.txt b/async/src/CMakeLists.txt index 7d17f2b..6f8ab63 100644 --- a/async/src/CMakeLists.txt +++ b/async/src/CMakeLists.txt | |||
@@ -8,5 +8,9 @@ set(async_SRCS | |||
8 | ) | 8 | ) |
9 | 9 | ||
10 | add_library(${PROJECT_NAME} SHARED ${async_SRCS}) | 10 | add_library(${PROJECT_NAME} SHARED ${async_SRCS}) |
11 | target_link_libraries(${PROJECT_NAME} Qt5::Core) | 11 | target_link_libraries(${PROJECT_NAME} PUBLIC Qt5::Core) |
12 | if (WITH_KJOB) | ||
13 | target_link_libraries(${PROJECT_NAME} PUBLIC KF5::CoreAddons) | ||
14 | endif () | ||
15 | |||
12 | install(TARGETS ${PROJECT_NAME} ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}) | 16 | install(TARGETS ${PROJECT_NAME} ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}) |