2016-02-28 12 views
5

Ho il seguente CMakeLists.txt:Clion come distribuire il progetto?

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}) 

Sto usando Esegui-> Build (come release) in una cartella personalizzata ClionProjects\Thesis\exe\Release e ottengo un unico eseguibile Thesis.exe. Se apro che, ottengo i seguenti errori consecutivi:

1

Che cosa mi manca esattamente?

risposta

4

La mia soluzione era collegare le librerie staticamente. Quello era che non c'è bisogno di un .dll scomodo in piedi accanto al tuo .exe.

Aggiunta di una sola riga sulla CMakeLists.txt

set(CMAKE_EXE_LINKER_FLAGS -static) 

Risolto il mio problema. Ecco altre 2 opzioni che funzionano anche, nel caso in cui ne hai bisogno per qualche motivo.

#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) 

mio .exe passato da 100KB a 1MB

Edit: Una coppia opzioni più cool

Aggiunto -s e -O3 alla mia originale CMakeLists.txt della mia domanda.

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

-s dimensioni ridotte da 1 MB a 650 KB. -s

-O3 si suppone per impostare il livello di ottimizzazione per 3, che è il massimo -O3

Potete vedere tutte le opzioni dal gcc.gnu.org site. Ci sono troppi. Usa l'opzione "trova" del tuo browser (Ctrl + f).

0

Mancano 2 delle DLL richieste.

Il modo più semplice per risolvere ciò consiste nel dire al compilatore di collegarsi staticamente a ogni libreria utilizzando l'opzione -static in GCC.

Un altro modo è copiare quelle DLL nella cartella in cui esiste il file eseguibile.

Il terzo modo è trovare quelle DLL e register them.

+1

Puoi approfondire la prima opzione che è chiaramente la più comoda? Questo è il punto della domanda, come posso farlo? Non so come. – dimitris93

+0

@Shiro: Non so come usare Cmake, quindi non posso dirti cosa devi aggiungere al tuo makefile, ma devi trovare un modo per passare l'opzione '-static' a GCC. – nom

+1

Ho cercato di farlo senza successo – dimitris93