cmake: Ignore files that violate subproject isolation (fixes #6640)
parent
76ae865864
commit
55d3fe4f4a
7 changed files with 79 additions and 1 deletions
@ -0,0 +1,3 @@ |
||||
#pragma once |
||||
|
||||
#define SOME_DEFINE " World" |
@ -0,0 +1,10 @@ |
||||
#include <iostream> |
||||
#include <cmMod.hpp> |
||||
|
||||
using namespace std; |
||||
|
||||
int main(void) { |
||||
cmModClass obj("Hello"); |
||||
cout << obj.getStr() << endl; |
||||
return 0; |
||||
} |
@ -0,0 +1,17 @@ |
||||
project('subproject isolation', ['c', 'cpp']) |
||||
|
||||
if not find_program('cmake', required: false).found() |
||||
error('MESON_SKIP_TEST CMake is not installed') |
||||
endif |
||||
|
||||
incdir = meson.source_root() / 'incDir' |
||||
|
||||
cm = import('cmake') |
||||
|
||||
# This should generate a warning and the include dir should be skipped. |
||||
sub_pro = cm.subproject('cmMod', cmake_options : [ '-DMESON_INC_DIR=' + incdir ]) |
||||
sub_dep = sub_pro.dependency('cmModLib++') |
||||
|
||||
# Since the include dir is skipped, the compilation of this project should fail. |
||||
exe1 = executable('main', ['main.cpp'], dependencies: [sub_dep]) |
||||
test('test1', exe1) |
@ -0,0 +1,10 @@ |
||||
cmake_minimum_required(VERSION 3.5) |
||||
|
||||
project(cmMod) |
||||
set (CMAKE_CXX_STANDARD 14) |
||||
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR} ${MESON_INC_DIR}) |
||||
|
||||
add_library(cmModLib++ SHARED cmMod.cpp) |
||||
include(GenerateExportHeader) |
||||
generate_export_header(cmModLib++) |
@ -0,0 +1,12 @@ |
||||
#include "cmMod.hpp" |
||||
#include "fileA.hpp" |
||||
|
||||
using namespace std; |
||||
|
||||
cmModClass::cmModClass(string foo) { |
||||
str = foo + SOME_DEFINE; |
||||
} |
||||
|
||||
string cmModClass::getStr() const { |
||||
return str; |
||||
} |
@ -0,0 +1,14 @@ |
||||
#pragma once |
||||
|
||||
#include "cmmodlib++_export.h" |
||||
#include <string> |
||||
|
||||
class CMMODLIB___EXPORT cmModClass { |
||||
private: |
||||
std::string str; |
||||
|
||||
public: |
||||
cmModClass(std::string foo); |
||||
|
||||
std::string getStr() const; |
||||
}; |
Loading…
Reference in new issue