2016-02-28 29 views
5

Ich habe folgende CMakeLists.txt:Clion wie Projekt zu implementieren?

cmake_minimum_required(VERSION 3.3) 
project(Thesis) 

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 

set(SOURCE_FILES main.cpp Graph.h Graph.cpp) 
add_executable(Thesis ${SOURCE_FILES}) 

Ich bin mit Run-> Build (als Release) auf einem benutzerdefinierten Ordner ClionProjects\Thesis\exe\Release und ich bekomme eine einziges ausführbares Thesis.exe. Wenn ich das öffnen, erhalte ich die folgenden aufeinander folgenden Fehler:

1

Was bin ich dabei genau?

Antwort

4

Meine Lösung war, die Bibliotheken statisch zu verknüpfen. Das bedeutete, dass keine unbeholfene DLL neben Ihrer EXE-Datei vorhanden sein muss.

Hinzufügen einer einzigen Zeile auf dem CMakeLists.txt

set(CMAKE_EXE_LINKER_FLAGS -static) 

behoben mein Problem. Hier sind weitere 2 Optionen, die auch funktionieren, falls Sie sie aus irgendeinem Grund benötigen.

#set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GCC_COVERAGE_LINK_FLAGS} -static-libgcc -static-libstdc++ -static") 
#set(CMAKE_EXE_LINKER_FLAGS=-static-libgcc -static-libstdc++ -static) 

Mein .exe ging von 100 KB bis 1 MB

Edit: Ein paar kühlere Optionen

Added -s und -O3 zu meiner ursprünglichen CMakeLists.txt meiner Frage.

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -s -O3") 

-s reduzierte Größe von 1 MB bis 650KB. -s

-O3 soll Optimierungsstufe auf 3 einzustellen, die die max -O3

Sie alle Optionen aus dem gcc.gnu.org site zu sehen ist. Es gibt zu viele. Verwenden Sie die Option "Suchen" Ihres Browsers (Strg + f).

0

Sie fehlen 2 der erforderlichen DLLs.

Der einfachste Weg, um dies zu lösen, ist es, den Compiler zu sagen, mit jeder Bibliothek statisch zu verbinden, indem Sie die Option -static in GCC verwenden.

Eine andere Möglichkeit besteht darin, diese DLLs in den Ordner zu kopieren, in dem die ausführbare Datei vorhanden ist. Die dritte Möglichkeit besteht darin, diese DLLs und register them zu finden.

+1

Können Sie näher auf die erste Option eingehen, die eindeutig die bequemste ist? Das ist der Punkt der Frage, wie kann ich das tun? Ich weiß nicht wie. – dimitris93

+0

@Shiro: Ich weiß nicht, wie man Cmake benutzt, also kann ich dir nicht sagen, was du deinem Makefile hinzufügen musst, aber du musst einen Weg finden, die '-static' Option an GCC zu übergeben. – nom

+1

Ich habe versucht, das erfolglos zu tun – dimitris93