|
|
@@ -3148,6 +3148,22 @@ std::string cmLocalGenerator::GetObjectFileNameWithoutTarget(
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // Ensure that for the CMakeFiles/<target>.dir/generated_source_file
|
|
|
+ // we don't end up having:
|
|
|
+ // CMakeFiles/<target>.dir/CMakeFiles/<target>.dir/generated_source_file.obj
|
|
|
+ const char* unitySourceFile = source.GetProperty("UNITY_SOURCE_FILE");
|
|
|
+ const char* pchExtension = source.GetProperty("PCH_EXTENSION");
|
|
|
+ if (unitySourceFile || pchExtension) {
|
|
|
+ if (pchExtension) {
|
|
|
+ customOutputExtension = pchExtension;
|
|
|
+ }
|
|
|
+
|
|
|
+ cmsys::RegularExpression var("(CMakeFiles/[^/]+.dir/)");
|
|
|
+ if (var.find(objectName)) {
|
|
|
+ objectName.erase(var.start(), var.end() - var.start());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
// Replace the original source file extension with the object file
|
|
|
// extension.
|
|
|
bool keptSourceExtension = true;
|
|
|
@@ -3164,19 +3180,6 @@ std::string cmLocalGenerator::GetObjectFileNameWithoutTarget(
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- const char* pchExtension = source.GetProperty("PCH_EXTENSION");
|
|
|
- if (pchExtension) {
|
|
|
- customOutputExtension = pchExtension;
|
|
|
-
|
|
|
- // Make sure that for the CMakeFiles/<target>.dir/cmake_pch.h|xx.c|xx
|
|
|
- // source file, we don't end up having
|
|
|
- // CMakeFiles/<target>.dir/CMakeFiles/<target>.dir/cmake_pch.h|xx.pch
|
|
|
- cmsys::RegularExpression var("(CMakeFiles/[^/]+.dir/)");
|
|
|
- while (var.find(objectName)) {
|
|
|
- objectName.erase(var.start(), var.end() - var.start());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
// Remove the source extension if it is to be replaced.
|
|
|
if (replaceExt || customOutputExtension) {
|
|
|
keptSourceExtension = false;
|