Skip to content

Commit 47a4c37

Browse files
Fix Windows CMake path handling.
The CMake module path was not being handled correctly on Windows because backslashes were not escaped. This change explicitly replaces backslashes with forward slashes for the `CMAKE_MODULE_PATH` argument when building on Windows.
1 parent 65e4ae2 commit 47a4c37

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

build-logic/src/main/java/com/android/ndk/samples/buildlogic/AndroidApplicationConventionPlugin.kt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import com.android.build.api.dsl.ApplicationExtension
55
import org.gradle.api.Plugin
66
import org.gradle.api.Project
77
import org.gradle.kotlin.dsl.configure
8+
import java.lang.System.getProperty
89

910
class AndroidApplicationConventionPlugin : Plugin<Project> {
1011
override fun apply(target: Project) {
@@ -30,7 +31,14 @@ class AndroidApplicationConventionPlugin : Plugin<Project> {
3031
externalNativeBuild {
3132
cmake {
3233
arguments.add("-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON")
33-
arguments.add("-DCMAKE_MODULE_PATH=${rootDir.resolve("cmake")}")
34+
// Determine if the OS is Windows
35+
val isWindows = getProperty("os.name").lowercase().contains("win")
36+
val cmakeModulePath = if (isWindows) {
37+
rootDir.resolve("cmake").toString().replace('\\', '/')
38+
} else {
39+
rootDir.resolve("cmake").toString()
40+
}
41+
arguments.add("-DCMAKE_MODULE_PATH=$cmakeModulePath")
3442
}
3543
}
3644

build-logic/src/main/java/com/android/ndk/samples/buildlogic/AndroidLibraryConventionPlugin.kt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import com.android.build.api.dsl.LibraryExtension
44
import org.gradle.api.Plugin
55
import org.gradle.api.Project
66
import org.gradle.kotlin.dsl.configure
7+
import java.lang.System.getProperty
78

89
class AndroidLibraryConventionPlugin : Plugin<Project> {
910
override fun apply(target: Project) {
@@ -33,7 +34,14 @@ class AndroidLibraryConventionPlugin : Plugin<Project> {
3334
externalNativeBuild {
3435
cmake {
3536
arguments.add("-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON")
36-
arguments.add("-DCMAKE_MODULE_PATH=${rootDir.resolve("cmake")}")
37+
// Determine if the OS is Windows
38+
val isWindows = getProperty("os.name").lowercase().contains("win")
39+
val cmakeModulePath = if (isWindows) {
40+
rootDir.resolve("cmake").toString().replace('\\', '/')
41+
} else {
42+
rootDir.resolve("cmake").toString()
43+
}
44+
arguments.add("-DCMAKE_MODULE_PATH=$cmakeModulePath")
3745
}
3846
}
3947
ndk {

0 commit comments

Comments
 (0)