Wie kompiliere ich die Quelldatei jedes Mal neu, wenn ich cmake 2.8.2 in Single Build für C ++ 11 und C ++ 98 für die Erstellung einer gemeinsam genutzten Bibliothek verwende?

Ich habe eine Projektverzeichnisstruktur von:

Root
  Source
    Common
      MyFolder
      ++ My 3 source files and header 

Wenn ich mein Projekt erstelle, werden 3 bis 4 gemeinsam genutzte Bibliotheken erstellt. Lib1 mit c ++ 98 kompiliert und andere mit c ++ 11. Flags werden in der Datei CmakeList.txt hinzugefügt, die sich im Stammverzeichnis befindet. Ich muss meine 3 Quelldateien für @ kompilier Lib1 und auch für andere Bibliotheken. Aber hier passiert, dass der Compiler zuerst meine Quelldatei für lib mit c ++ 11 kompiliert und dann versucht, dieselbe .o-Datei auch für Lib1 zu verwenden. Für .o-Dateien, die mit C ++ 11 generiert wurden, wird eine Ausnahme ausgelöst, wenn dieselbe für die kompilierte C ++ 98-Bibliothek verwendet wird.

So schreiben Sie dies in CmakeList.txt, sodass der Compiler die Quelldatei für Lib1 (kompilierte C ++ 98-Bibliothek) erneut kompiliert, anstatt zu versuchen, dieselbe .o-Datei zu verwenden.

Gibt es ein Flag, das ich angeben kann, damit die vorkompilierte .o-Datei nicht verwendet und erneut kompiliert wird?

Hier werden Flags für verschiedene gemeinsam genutzte Bibliotheken nicht überschrieben, aber tatsächlich wird dieselbe Objektdatei von make file für verschiedene Flags verwendet.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage