Skip to content

Commit 7dac26f

Browse files
committed
try to gracefully fail for write
1 parent 4e7e8cc commit 7dac26f

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

CMakeLists.txt

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,25 @@ if(UNIX AND NOT DEFINED CMAKE_INSTALL_PREFIX)
66
set(CMAKE_INSTALL_PREFIX "/usr/local" CACHE PATH "Installation directory prefix" FORCE)
77
endif()
88

9+
910
if(UNIX)
10-
# Test write access to CMAKE_INSTALL_PREFIX
1111
set(TEST_FILE "${CMAKE_INSTALL_PREFIX}/.cmake_write_test")
12-
file(WRITE "${TEST_FILE}" "") # Attempt to write the test file
12+
13+
# Attempt to write a test file
14+
file(WRITE "${TEST_FILE}" "" OUTPUT_VARIABLE WRITE_RESULT ERROR_VARIABLE WRITE_ERROR)
15+
1316
if(EXISTS "${TEST_FILE}")
1417
message(STATUS "Write access to ${CMAKE_INSTALL_PREFIX} confirmed.")
15-
file(REMOVE "${TEST_FILE}") # Cleanup the test file
18+
file(REMOVE "${TEST_FILE}") # Clean up the test file
1619
else()
20+
# Fallback to a writable directory (e.g., user's home)
1721
set(CMAKE_INSTALL_PREFIX "$ENV{HOME}/mst_telemetry" CACHE PATH "Fallback installation directory prefix" FORCE)
18-
message(STATUS "No write access to ${CMAKE_INSTALL_PREFIX}, installing to $HOME/mst_telemetry instead.")
22+
message(STATUS "No write access to ${CMAKE_INSTALL_PREFIX}, using $ENV{HOME}/mst_telemetry instead.")
1923
endif()
2024
endif()
2125

26+
27+
2228
set(INSTALL_BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Installation directory for executables")
2329
set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH "Installation directory for libraries")
2430
set(INSTALL_INC_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "Installation directory for headers")

0 commit comments

Comments
 (0)