diff --git a/pom.xml b/pom.xml
index efc48e6fdd85a14e5350494450e9774f79d8f02d..6dfda3bf3cb7220de97c3af49fdd75e05bfc7223 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,7 +9,7 @@
 
     <groupId>de.monticore.lang.monticar</groupId>
     <artifactId>embedded-montiarc-math-middleware-generator</artifactId>
-    <version>0.0.9-SNAPSHOT</version>
+    <version>0.0.10-SNAPSHOT</version>
 
     <!-- == PROJECT DEPENDENCIES ============================================= -->
 
diff --git a/src/main/java/de/monticore/lang/monticar/generator/middleware/DistributedTargetGenerator.java b/src/main/java/de/monticore/lang/monticar/generator/middleware/DistributedTargetGenerator.java
index 0aac73f670a6a2e8f12080b209bfec06da3d2387..4fdc2badc808794b97b399ed172f90495d3c09dd 100644
--- a/src/main/java/de/monticore/lang/monticar/generator/middleware/DistributedTargetGenerator.java
+++ b/src/main/java/de/monticore/lang/monticar/generator/middleware/DistributedTargetGenerator.java
@@ -48,14 +48,16 @@ public class DistributedTargetGenerator extends CMakeGenerator {
             subDirs.add(NameHelper.getNameTargetLanguage(comp.getFullName()));
         }
 
-        subDirs.add("rosMsg");
-        files.add(generateCMake(componentInstanceSymbol));
-        files.add(generateRosMsgGen());
+        //generate rosMsg CMake iff a .msg file was generated
+        if(files.stream().anyMatch(f -> f.getName().endsWith(".msg"))){
+            subDirs.add("rosMsg");
+            files.add(generateRosMsgGen());
+        }
 
+        files.add(generateCMake(componentInstanceSymbol));
         return files;
     }
 
-    //TODO:refactor, dont always generate
     private File generateRosMsgGen() throws IOException {
         File file = new File(generationTargetPath + "rosMsg/CMakeLists.txt");
         FileUtils.write(file, TemplateHelper.getStruct_msgsCmakeTemplate());
diff --git a/src/test/java/de/monticore/lang/monticar/generator/middleware/GenerationTest.java b/src/test/java/de/monticore/lang/monticar/generator/middleware/GenerationTest.java
index 93c09247ef0c71a7eea906e44bc699c91256422e..6c5d62ef8d73009179c1ba053bd64bf4fba53624 100644
--- a/src/test/java/de/monticore/lang/monticar/generator/middleware/GenerationTest.java
+++ b/src/test/java/de/monticore/lang/monticar/generator/middleware/GenerationTest.java
@@ -23,6 +23,7 @@ import java.util.stream.Collectors;
 
 import static junit.framework.TestCase.assertTrue;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 
 public class GenerationTest extends AbstractSymtabTest {
@@ -317,4 +318,25 @@ public class GenerationTest extends AbstractSymtabTest {
         starBridgeGenerator.generate(componentInstanceSymbol, taggingResolver);
         assertTrue(Log.getFindings().isEmpty());
     }
+
+
+    @Test
+    public void testNoRosMsg() throws IOException {
+        TaggingResolver taggingResolver = createSymTabAndTaggingResolver(TEST_PATH);
+
+        ExpandedComponentInstanceSymbol componentInstanceSymbol = taggingResolver.<ExpandedComponentInstanceSymbol>resolve("tests.a.addComp", ExpandedComponentInstanceSymbol.KIND).orElse(null);
+        assertNotNull(componentInstanceSymbol);
+        TagHelper.resolveTags(taggingResolver, componentInstanceSymbol);
+
+        DistributedTargetGenerator distributedTargetGenerator = new DistributedTargetGenerator();
+        distributedTargetGenerator.setGenerationTargetPath("./target/generated-sources-cmake/noRosMsg/");
+        distributedTargetGenerator.add(new CPPGenImpl(),"cpp");
+
+        List<File> files = distributedTargetGenerator.generate(componentInstanceSymbol, taggingResolver);
+
+
+        List<String> filenames = files.stream().map(File::getAbsolutePath).map(name -> name.replace('\\','/')).collect(Collectors.toList());
+
+        assertFalse(filenames.stream().anyMatch(fn -> fn.endsWith("rosMsg/CMakeLists.txt")));
+    }
 }