Wie man einen relativen Pfad zu einem Ziel mit CMake?

Habe ich ein Projekt verwendet CMake zu generieren build-Skripte, und jede Plattform stellt die ausführbare Datei, die generiert werden, an einem anderen Ort. Wir haben einen nicht-Programmierer in unserem team, die nicht über build-tools und ich möchte in der Lage zu bündeln, bis alle Dateien, Skripts und ausführbare Dateien notwendig, um das Projekt auszuführen, so dass er das Projekt auszuführen.

Tun, ich habe ein benutzerdefiniertes Ziel, dass alle notwendige Dateien und Reißverschlüssen Ihnen bis. Es erzeugt auch ein sehr einfaches script (enthalten in der zip-Datei), dass er einfach auf, das sollte ein Skript ausgeführt wird, dann starten Sie die ausführbare Datei, etwa so:

add_custom_target(runcommand
  COMMAND echo '\#!/bin/bash -eu' > run.command &&
          echo 'cd `dirname $$0`' >> run.command &&
          echo './scripts/prerun_script.sh && ${MY_EXECUTABLE}' >> run.command &&
          chmod +x run.command)

Das problem mit diesem ist, dass MY_EXECUTABLE ist einen hartcodierten Pfad zu der ausführbaren Datei auf meinem system. Ich möchte, dass es ein relativer Pfad, so dass ich nur nehmen Sie das resultierende zip-Datei, entpacken Sie es irgendwo und führen Sie es von dort. Was ich möchte ist, um den Pfad zu MY_EXECUTABLE relativ zum root-Verzeichnis meines Projektes, damit dieses Skript ausgeführt werden kann, von überall.

  • Ihre Frage ist über die relativen Pfade in CMake. Aber die Lösung für das problem, das du beschreibst, ist wirklich nicht das CMake Weg, Dinge zu tun. CMake zusammen mit CPack unterstützt die Installation von Zielen. Diese install-targets können dann verpackt werden entweder als zip -, tgz -, debian-Paket. All dies geschieht in einem Plattform-unabhängigen Weise. Ihre Lösung ist Plattform-spezifisch, da es verwendet ein bash-Skript. cmake.org/Wiki/CMake:Packaging_With_CPack
InformationsquelleAutor Alex | 2014-08-21
Schreibe einen Kommentar