/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ #pragma once #include "cmConfigure.h" // IWYU pragma: keep #include #include class cmMakefile; class cmExecutionStatus; class cmSourceFile; bool cmSetPropertyCommand(std::vector const& args, cmExecutionStatus& status); namespace SetPropertyCommand { bool HandleSourceFileDirectoryScopes( cmExecutionStatus& status, std::vector& source_file_directories, std::vector& source_file_target_directories, std::vector& directory_makefiles); bool HandleSourceFileDirectoryScopeValidation( cmExecutionStatus& status, bool source_file_directory_option_enabled, bool source_file_target_option_enabled, std::vector& source_file_directories, std::vector& source_file_target_directories); bool HandleAndValidateSourceFileDirectoryScopes( cmExecutionStatus& status, bool source_directories_option_encountered, bool source_target_directories_option_encountered, std::vector& source_directories, std::vector& source_target_directories, std::vector& source_file_directory_makefiles); bool HandleTestDirectoryScopes(cmExecutionStatus& status, std::string& test_directory, cmMakefile*& directory_makefile); bool HandleTestDirectoryScopeValidation(cmExecutionStatus& status, bool test_directory_option_enabled, std::string& test_directory); bool HandleAndValidateTestDirectoryScopes( cmExecutionStatus& status, bool test_directory_option_encountered, std::string& test_directory, cmMakefile*& test_directory_makefile); std::string MakeSourceFilePathAbsoluteIfNeeded( cmExecutionStatus& status, const std::string& source_file_path, bool needed); void MakeSourceFilePathsAbsoluteIfNeeded( cmExecutionStatus& status, std::vector& source_files_absolute_paths, std::vector::const_iterator files_it_begin, std::vector::const_iterator files_it_end, bool needed); enum class PropertyOp { Remove, Set, Append, AppendAsString }; bool HandleAndValidateSourceFilePropertyGENERATED( cmSourceFile* sf, std::string const& propertyValue, PropertyOp op = PropertyOp::Set); }