mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-22 06:02:11 +02:00
Bug 546409 - CMake configure failing in corner cases
- With Makefiles generator run configure step if no Makefile exists - Clean build dir before running the configure step Change-Id: I3514835920a452e724e04b19f64d4a74fc4f3c2c Signed-off-by: Fabrizio Iannetti <fabrizio.iannetti@gmail.com>
This commit is contained in:
parent
cbf526193a
commit
2006e6cdf1
3 changed files with 27 additions and 0 deletions
|
@ -145,12 +145,20 @@ public class CMakeBuildConfiguration extends CBuildConfiguration {
|
|||
case "Ninja": //$NON-NLS-1$
|
||||
runCMake = !Files.exists(buildDir.resolve("build.ninja")); //$NON-NLS-1$
|
||||
break;
|
||||
case "Unix Makefiles": //$NON-NLS-1$
|
||||
runCMake = !Files.exists(buildDir.resolve("Makefile")); //$NON-NLS-1$
|
||||
break;
|
||||
default:
|
||||
runCMake = !Files.exists(buildDir.resolve("CMakeFiles")); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
if (runCMake) { // $NON-NLS-1$
|
||||
|
||||
console.getOutputStream().write(String.format(Messages.CMakeBuildConfiguration_Configuring, buildDir));
|
||||
// clean output to make sure there is no content
|
||||
// incompatible with current settings (cmake config would fail)
|
||||
cleanBuildDirectory(buildDir);
|
||||
|
||||
List<String> command = new ArrayList<>();
|
||||
|
||||
command.add("cmake"); //$NON-NLS-1$
|
||||
|
@ -339,4 +347,21 @@ public class CMakeBuildConfiguration extends CBuildConfiguration {
|
|||
}
|
||||
}
|
||||
|
||||
private void cleanDirectory(Path dir) throws IOException {
|
||||
Path[] files = Files.list(dir).toArray(Path[]::new);
|
||||
for (Path file : files) {
|
||||
if (Files.isDirectory(file))
|
||||
cleanDirectory(file);
|
||||
else
|
||||
Files.delete(file);
|
||||
}
|
||||
}
|
||||
|
||||
private void cleanBuildDirectory(Path buildDir) throws IOException {
|
||||
if (!Files.exists(buildDir))
|
||||
return;
|
||||
if (Files.isDirectory(buildDir))
|
||||
cleanDirectory(buildDir);
|
||||
// TODO: not a directory should we do something?
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ public class Messages extends NLS {
|
|||
public static String CMakeBuildConfiguration_BuildingComplete;
|
||||
public static String CMakeBuildConfiguration_BuildComplete;
|
||||
public static String CMakeBuildConfiguration_Cleaning;
|
||||
public static String CMakeBuildConfiguration_Configuring;
|
||||
public static String CMakeBuildConfiguration_NotFound;
|
||||
public static String CMakeBuildConfiguration_NoToolchainFile;
|
||||
public static String CMakeBuildConfiguration_ProcCompCmds;
|
||||
|
|
|
@ -12,6 +12,7 @@ CMakeBuildConfiguration_Building=Building %s
|
|||
CMakeBuildConfiguration_BuildingIn=Building in: %s\n
|
||||
CMakeBuildConfiguration_BuildingComplete=Build complete (%d errors, %d warnings): %s\n
|
||||
CMakeBuildConfiguration_BuildComplete=Build complete\n
|
||||
CMakeBuildConfiguration_Configuring=Configuring in: %s\n
|
||||
CMakeBuildConfiguration_Cleaning=Cleaning %s
|
||||
CMakeBuildConfiguration_NotFound=CMakeFiles not found. Assuming clean.
|
||||
CMakeBuildConfiguration_NoToolchainFile=No CMake toolchain file found for this target.
|
||||
|
|
Loading…
Add table
Reference in a new issue