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

Method InstallProject

Source/CPack/cmCPackGenerator.cxx:220–326  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

218}
219
220int cmCPackGenerator::InstallProject()
221{
222 cmCPackLogger(cmCPackLog::LOG_OUTPUT, "Install projects" << std::endl);
223 this->CleanTemporaryDirectory();
224
225 std::string bareTempInstallDirectory =
226 this->GetOption("CPACK_TEMPORARY_DIRECTORY");
227 std::string tempInstallDirectory = bareTempInstallDirectory;
228 cmValue v = this->GetOption("CPACK_SET_DESTDIR");
229 bool setDestDir = v.IsOn() || cmIsInternallyOn(v);
230 if (!setDestDir) {
231 tempInstallDirectory += this->GetPackagingInstallPrefix();
232 }
233
234 int res = 1;
235 if (!cmsys::SystemTools::MakeDirectory(bareTempInstallDirectory)) {
236 cmCPackLogger(
237 cmCPackLog::LOG_ERROR,
238 "Problem creating temporary directory: "
239 << (!tempInstallDirectory.empty() ? tempInstallDirectory : "(NULL)")
240 << std::endl);
241 return 0;
242 }
243
244 if (setDestDir) {
245 std::string destDir = cmStrCat("DESTDIR=", tempInstallDirectory);
246 cmSystemTools::PutEnv(destDir);
247 } else {
248 // Make sure there is no destdir
249 cmSystemTools::PutEnv("DESTDIR=");
250 }
251
252 // prepare default created directory permissions
253 mode_t default_dir_mode_v = 0;
254 mode_t* default_dir_mode = nullptr;
255 cmValue default_dir_install_permissions =
256 this->GetOption("CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS");
257 if (cmNonempty(default_dir_install_permissions)) {
258 cmList items{ default_dir_install_permissions };
259 for (auto const& arg : items) {
260 if (!cmFSPermissions::stringToModeT(arg, default_dir_mode_v)) {
261 cmCPackLogger(cmCPackLog::LOG_ERROR,
262 "Invalid permission value '"
263 << arg
264 << "'."
265 " CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS "
266 "value is invalid."
267 << std::endl);
268 return 0;
269 }
270 }
271
272 default_dir_mode = &default_dir_mode_v;
273 }
274
275 // If the CPackConfig file sets CPACK_INSTALL_COMMANDS then run them
276 // as listed
277 if (!this->InstallProjectViaInstallCommands(setDestDir,

Callers 1

DoPackageMethod · 0.95

Calls 13

GetOptionMethod · 0.95
cmIsInternallyOnFunction · 0.85
cmNonemptyFunction · 0.85
cmStrCatFunction · 0.50
IsOnMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected