diff options
author | Daniel Mensinger <daniel@mensinger-ka.de> | 2021-07-04 22:16:46 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2021-07-05 18:21:10 +0300 |
commit | 8e1c599c10679bdb1bdc050f110d53257e4d641c (patch) | |
tree | d2db5c414082eaece03078fa54a9f742ad9bae84 | |
parent | bd6f46e723813dfadaba1f7c87d3b0b751d05219 (diff) | |
download | meson-8e1c599c10679bdb1bdc050f110d53257e4d641c.zip meson-8e1c599c10679bdb1bdc050f110d53257e4d641c.tar.gz meson-8e1c599c10679bdb1bdc050f110d53257e4d641c.tar.bz2 |
cmake: Improved error message for using dependency for executables
fixes #8893
5 files changed, 26 insertions, 0 deletions
diff --git a/mesonbuild/modules/cmake.py b/mesonbuild/modules/cmake.py index c390b01..cc259dc 100644 --- a/mesonbuild/modules/cmake.py +++ b/mesonbuild/modules/cmake.py @@ -109,6 +109,8 @@ class CMakeSubproject(ModuleObject): @stringArgs def dependency(self, state, args, kwargs): info = self._args_to_info(args) + if info['func'] == 'executable': + raise InvalidArguments(f'{args[0]} is an executable and does not support the dependency() method. Use target() instead.') orig = self.get_variable(state, [info['dep']], {}) assert isinstance(orig, dependencies.Dependency) actual = orig.include_type diff --git a/test cases/failing/116 cmake executable dependency/meson.build b/test cases/failing/116 cmake executable dependency/meson.build new file mode 100644 index 0000000..bfb03ef --- /dev/null +++ b/test cases/failing/116 cmake executable dependency/meson.build @@ -0,0 +1,9 @@ +project('cmake-executable-dependency', ['c', 'cpp']) + +if not find_program('cmake', required: false).found() + error('MESON_SKIP_TEST CMake is not installed') +endif + +cmake = import('cmake') +cmlib = cmake.subproject('cmlib') +maind = cmlib.dependency('main') diff --git a/test cases/failing/116 cmake executable dependency/subprojects/cmlib/CMakeLists.txt b/test cases/failing/116 cmake executable dependency/subprojects/cmlib/CMakeLists.txt new file mode 100644 index 0000000..0067879 --- /dev/null +++ b/test cases/failing/116 cmake executable dependency/subprojects/cmlib/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 3.5) + +project(cmlib) + +add_executable(main main.c) diff --git a/test cases/failing/116 cmake executable dependency/subprojects/cmlib/main.c b/test cases/failing/116 cmake executable dependency/subprojects/cmlib/main.c new file mode 100644 index 0000000..9b6bdc2 --- /dev/null +++ b/test cases/failing/116 cmake executable dependency/subprojects/cmlib/main.c @@ -0,0 +1,3 @@ +int main(void) { + return 0; +} diff --git a/test cases/failing/116 cmake executable dependency/test.json b/test cases/failing/116 cmake executable dependency/test.json new file mode 100644 index 0000000..d11cfa7 --- /dev/null +++ b/test cases/failing/116 cmake executable dependency/test.json @@ -0,0 +1,7 @@ +{ + "stdout": [ + { + "line": "test cases/failing/116 cmake executable dependency/meson.build:9:0: ERROR: main is an executable and does not support the dependency() method. Use target() instead." + } + ] +} |