diff --git a/src/cmake_generator.cpp b/src/cmake_generator.cpp index 881d0cb..7e01d98 100644 --- a/src/cmake_generator.cpp +++ b/src/cmake_generator.cpp @@ -162,10 +162,11 @@ struct Command { return "\"\""; } // Don't quote arguments that don't need quoting - if (str.find(' ') == std::string::npos && str.find('\"') == std::string::npos && str.find('/') == std::string::npos && - str.find(';') == std::string::npos) { + // https://cmake.org/cmake/help/latest/manual/cmake-language.7.html#unquoted-argument + // NOTE: Normally '/' does not require quoting according to the documentation but this has been the case here + // previously, so for backwards compatibility its still here. + if (str.find_first_of("()#\"\\'> |/") == str.npos) return str; - } std::string result; result += "\""; for (char ch : str) { diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 0b46624..bc48fde 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -14,7 +14,7 @@ add_test( WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/basic" COMMAND - $ + "$" build ) @@ -24,7 +24,7 @@ add_test( WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/interface" COMMAND - $ + "$" build ) @@ -34,7 +34,7 @@ add_test( WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/fetch-content" COMMAND - $ + "$" build ) @@ -44,7 +44,7 @@ add_test( WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/conditions" COMMAND - $ + "$" build ) @@ -54,7 +54,7 @@ add_test( WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/vcpkg" COMMAND - $ + "$" build ) @@ -64,7 +64,7 @@ add_test( WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/cxx-standard" COMMAND - $ + "$" build ) @@ -74,7 +74,7 @@ add_test( WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/globbing" COMMAND - $ + "$" build ) @@ -84,7 +84,7 @@ add_test( WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/templates" COMMAND - $ + "$" build )