MCPcopy Create free account
hub / github.com/Kitware/CMake / AddDirectoryAndFileDefinitions

Method AddDirectoryAndFileDefinitions

Source/CPack/WiX/cmCPackWIXGenerator.cxx:1037–1151  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1035}
1036
1037void cmCPackWIXGenerator::AddDirectoryAndFileDefinitions(
1038 std::string const& topdir, std::string const& directoryId,
1039 cmWIXDirectoriesSourceWriter& directoryDefinitions,
1040 cmWIXFilesSourceWriter& fileDefinitions,
1041 cmWIXFeaturesSourceWriter& featureDefinitions,
1042 std::vector<std::string> const& packageExecutables,
1043 std::vector<std::string> const& desktopExecutables,
1044 cmWIXShortcuts& shortcuts, int diskId)
1045{
1046 cmsys::Directory dir;
1047 dir.Load(topdir.c_str());
1048
1049 std::string relativeDirectoryPath =
1050 cmSystemTools::RelativePath(toplevel.c_str(), topdir.c_str());
1051
1052 if (relativeDirectoryPath.empty()) {
1053 relativeDirectoryPath = ".";
1054 }
1055
1056 cmInstalledFile const* directoryInstalledFile = this->GetInstalledFile(
1057 this->RelativePathWithoutComponentPrefix(relativeDirectoryPath));
1058
1059 bool emptyDirectory = dir.GetNumberOfFiles() == 2;
1060 bool createDirectory = false;
1061
1062 if (emptyDirectory) {
1063 createDirectory = true;
1064
1065 if (directoryId == "INSTALL_ROOT") {
1066 return;
1067 }
1068 }
1069
1070 if (directoryInstalledFile) {
1071 if (directoryInstalledFile->HasProperty("CPACK_WIX_ACL")) {
1072 createDirectory = true;
1073 }
1074 }
1075
1076 if (createDirectory) {
1077 std::string componentId = fileDefinitions.EmitComponentCreateFolder(
1078 directoryId, GenerateGUID(), directoryInstalledFile);
1079 featureDefinitions.EmitComponentRef(componentId);
1080 }
1081
1082 if (emptyDirectory) {
1083 return;
1084 }
1085
1086 for (size_t i = 0; i < dir.GetNumberOfFiles(); ++i) {
1087 std::string fileName = dir.GetFile(static_cast<unsigned long>(i));
1088
1089 if (fileName == "."_s || fileName == ".."_s) {
1090 continue;
1091 }
1092
1093 std::string fullPath = cmStrCat(topdir, '/', fileName);
1094

Callers

nothing calls this directly

Calls 15

c_strMethod · 0.80
HasPropertyMethod · 0.80
EmitComponentRefMethod · 0.80
BeginElementMethod · 0.80
ApplyFragmentMethod · 0.80
has_valueMethod · 0.80
CreateFromPropertiesMethod · 0.80
EmitComponentFileMethod · 0.80
cmStrCatFunction · 0.50

Tested by

no test coverage detected