diff options
| author | Daniel Mensinger <daniel@mensinger-ka.de> | 2019-12-28 13:37:31 +0100 |
|---|---|---|
| committer | Jussi Pakkanen <jpakkane@gmail.com> | 2019-12-29 19:02:24 +0200 |
| commit | 4f6453bc327d91c29956459951a06bcdc73ba040 (patch) | |
| tree | 2eecc6438dfa3399c67b67a0ea58ef8a49720481 /test cases/cmake/16 threads | |
| parent | d67423ab11bbcd0e81d81005608a97363804f6a2 (diff) | |
| download | meson-4f6453bc327d91c29956459951a06bcdc73ba040.tar.gz | |
cmake: Use trace for missing link flags (fixes #6386)
This is neccessary for static libraries, since the
CMake file API does not add link flags here.
Diffstat (limited to 'test cases/cmake/16 threads')
6 files changed, 60 insertions, 0 deletions
diff --git a/test cases/cmake/16 threads/main.cpp b/test cases/cmake/16 threads/main.cpp new file mode 100644 index 000000000..67ee110a3 --- /dev/null +++ b/test cases/cmake/16 threads/main.cpp @@ -0,0 +1,9 @@ +#include "cmMod.hpp" + +#include <cstdlib> + +int main() { + CmMod cc; + cc.asyncIncrement(); + return cc.getNum() == 1 ? EXIT_SUCCESS : EXIT_FAILURE; +} diff --git a/test cases/cmake/16 threads/meson.build b/test cases/cmake/16 threads/meson.build new file mode 100644 index 000000000..d7ade1c4a --- /dev/null +++ b/test cases/cmake/16 threads/meson.build @@ -0,0 +1,8 @@ +project('cmMod', ['c', 'cpp']) + +cm = import('cmake') +cmMod = cm.subproject('cmMod') +cmModDep = cmMod.dependency('cmModLib') + +exe1 = executable('exe1', ['main.cpp'], dependencies: [cmModDep]) +test('exe1_OK', exe1) diff --git a/test cases/cmake/16 threads/subprojects/cmMod/CMakeLists.txt b/test cases/cmake/16 threads/subprojects/cmMod/CMakeLists.txt new file mode 100644 index 000000000..37d32c123 --- /dev/null +++ b/test cases/cmake/16 threads/subprojects/cmMod/CMakeLists.txt @@ -0,0 +1,9 @@ +cmake_minimum_required(VERSION 3.5) + +project(cmMod CXX) +set (CMAKE_CXX_STANDARD 14) + +find_package(Threads) + +add_library(cmModLib STATIC cmMod.cpp) +target_link_libraries(cmModLib PRIVATE Threads::Threads) diff --git a/test cases/cmake/16 threads/subprojects/cmMod/cmMod.cpp b/test cases/cmake/16 threads/subprojects/cmMod/cmMod.cpp new file mode 100644 index 000000000..f971eeba0 --- /dev/null +++ b/test cases/cmake/16 threads/subprojects/cmMod/cmMod.cpp @@ -0,0 +1,15 @@ +#include "cmMod.hpp" + +#include <chrono> +#include <thread> + +using namespace std::chrono_literals; + +void CmMod::asyncIncrement() { + std::thread t1([this]() { + std::this_thread::sleep_for(100ms); + num += 1; + }); + + t1.join(); +} diff --git a/test cases/cmake/16 threads/subprojects/cmMod/cmMod.hpp b/test cases/cmake/16 threads/subprojects/cmMod/cmMod.hpp new file mode 100644 index 000000000..1c85a8b1a --- /dev/null +++ b/test cases/cmake/16 threads/subprojects/cmMod/cmMod.hpp @@ -0,0 +1,10 @@ +#pragma once + +class CmMod { +private: + int num = 0; + +public: + inline int getNum() const { return num; } + void asyncIncrement(); +}; diff --git a/test cases/cmake/16 threads/subprojects/cmMod/main.cpp b/test cases/cmake/16 threads/subprojects/cmMod/main.cpp new file mode 100644 index 000000000..67ee110a3 --- /dev/null +++ b/test cases/cmake/16 threads/subprojects/cmMod/main.cpp @@ -0,0 +1,9 @@ +#include "cmMod.hpp" + +#include <cstdlib> + +int main() { + CmMod cc; + cc.asyncIncrement(); + return cc.getNum() == 1 ? EXIT_SUCCESS : EXIT_FAILURE; +} |
