2016-02-28 10 views
5

Mam następujący CMakeLists.txt:Clion jak wdrożyć projekt?

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

Używam Run-> budowlanej (jako release) na niestandardowym folderze ClionProjects\Thesis\exe\Release i dostaję jeden wykonywalny Thesis.exe. Jeśli otworzę, że mam następujące po sobie błędy:

1

Co mi brakuje dokładnie?

Odpowiedz

4

Moim rozwiązaniem było statyczne połączenie bibliotek. To nie było konieczne, aby utknąć .dll obok twojego .exe.

Dodanie jednej linii na CMakeLists.txt

set(CMAKE_EXE_LINKER_FLAGS -static) 

Fixed mojego problemu. Oto 2 inne opcje, które również działają, na wypadek, gdyby były potrzebne z jakiegoś powodu.

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

My .exe poszedł od 100KB do 1MB

Edit: Kilka więcej fajnych opcji

Dodany -s i -O3 aby mój oryginalny CMakeLists.txt mojego pytania.

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

-s zmniejszony rozmiar od 1MB do 650KB. -s

-O3 ma ustawiony poziom optymalizacji 3, który jest max -O3

można zobaczyć wszystkie opcje z gcc.gnu.org site. Jest za dużo. Użyj opcji "znajdź" w przeglądarce (Ctrl + F).

0

Nie masz 2 wymaganych bibliotek DLL.

Najprostszym sposobem rozwiązania tego problemu jest przekazanie kompilatorowi statycznego linku do każdej biblioteki za pomocą opcji -static w GCC.

Innym sposobem jest skopiowanie tych bibliotek DLL w folderze, w którym znajduje się plik wykonywalny.

Trzeci sposób polega na znalezieniu tych bibliotek DLL i register them.

+1

Czy możesz opracować więcej na temat pierwszej opcji, która jest najwyraźniej najwygodniejsza? Na tym polega pytanie: jak mogę to zrobić? Nie wiem jak. – dimitris93

+0

@Shiro: Nie wiem, jak używać Cmake, więc nie mogę powiedzieć, co musisz dodać do swojej makefile, ale musisz wymyślić sposób przekazania opcji '-static' do GCC. – nom

+1

Próbowałem to zrobić bezskutecznie – dimitris93