2016-02-28 4 views
5

У меня есть следующие CMakeLists.txt:Clion как развернуть проект?

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

Я использую RUN-> Build (как выпуска) на пользовательскую папку ClionProjects\Thesis\exe\Release и я получаю один исполняемый Thesis.exe. Если я открою, что я получаю следующие последовательные ошибки:

1

Что мне не хватает именно?

ответ

4

Моим решением было связать библиотеки статически. Это было не нужно для неудобного .dll, стоящего рядом с вашим .exe.

Добавление одной строки на CMakeLists.txt

set(CMAKE_EXE_LINKER_FLAGS -static) 

Fixed мою проблему. Вот еще 2 варианта, которые также работают, если вам это нужно по какой-то причине.

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

Мой .exe пошел от 100Кб до 1Мб

Edit: Пару более крутые варианты

Добавлено -s и -O3 к моей первоначальной CMakeLists.txt моего вопроса.

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

-s уменьшенного размера от 1 Мб до 650Kb. -s

-O3 предполагается установить уровень оптимизации до 3, который является не более -O3

Вы можете увидеть все варианты от gcc.gnu.org site. Слишком много. Используйте опцию «Найти» вашего браузера (Ctrl + f).

0

Вам не хватает 2 требуемых DLL.

Самый простой способ разрешить это - сообщить компилятору связать каждую библиотеку с помощью опции -static в GCC.

Другой способ - скопировать эти библиотеки DLL в папку, в которой существует ваш исполняемый файл.

Третий способ - найти эти DLL и register them.

+1

Можете ли вы подробнее рассказать о первом варианте, который, безусловно, наиболее удобен? Вот в чем вопрос, как я могу это сделать? Я не знаю, как это сделать. – dimitris93

+0

@Shiro: Я не знаю, как использовать Cmake, поэтому я не могу сказать вам, что вам нужно добавить в ваш make-файл, но вам нужно выяснить способ передачи опции «-статический» в GCC. – nom

+1

Я пытался сделать это безуспешно – dimitris93

Смежные вопросы