2015-10-30 7 views
1

Я пытаюсь скомпилировать очень простую («привет мир!») Программу C с клионом, но я продолжаю терпеть неудачу.Не удалось скомпилировать программу на языке C

это мой код:

#include "main.h" 
#include <stdio.h> 

int main() { 
printf("hi hi hi\n"); 
return 0; 
} 

main.h:

#ifndef EXONE_HELLO_H 
#define EXONE_HELLO_H 

#endif //EXONE_HELLO_H 

й мой макияж файла:

cmake_minimum_required(VERSION 3.3) 
project(exone) 

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ­-Wextra ­-Wall ­-Wvla​ -­std=c99") 

set(SOURCE_FILES main.c main.h) 
add_executable(exone ${SOURCE_FILES}) 

, но я получаю сообщение:

/dist/local/x86_64.debian64-5776/jetbrains/clion-1.1/bin/cmake/bin/cmake 

--build /tmp/.clion-oarzi/system/cmake/generated/48ee084e/48ee084e/Debug  
--target exone -- -j 4 

[ 50%] Building C object CMakeFiles/exone.dir/main.c.o 
cc: error: -Wextra: No such file or directory 
cc: error: -­Wall: No such file or directory 
cc: error: ­-Wvla​: No such file or directory 
cc: error: -std=c99: No such file or directory 
CMakeFiles/exone.dir/build.make:62: recipe for target 
'CMakeFiles/exone.dir/main.c.o' failed make[3]: *** 
[CMakeFiles/exone.dir/main.c.o] Error 1 CMakeFiles/Makefile2:67: 
recipe for target 'CMakeFiles/exone.dir/all' failed make[2]: *** 
[CMakeFiles/exone.dir/all] Error 2 CMakeFiles/Makefile2:79: recipe for 
target 'CMakeFiles/exone.dir/rule' failed make[1]: *** 
[CMakeFiles/exone.dir/rule] Error 2 Makefile:118: recipe for target 
'exone' failed make: *** [exone] Error 2 

также, это случается, когда я просто компилирую с помощью gcc с помощью консоли, а когда я меняю CMAKE_C_FLAGS на CMAKE_CXX_FLAGS все работает нормально (даже если я меняю только в первом из двух мест).

Обновление: Похоже, что я использовал минусовые знаки вместо тире. Теперь я получаю только один ошибку CC:

`cc: error: unrecognized command line option ‘-Wvla​’` 
+0

Он пытается вызвать компилятор 'cc', который не установлен/не может быть найден на вашей платформе. Не совсем программирование .. –

+1

Huh. @EugeneSh. Конечно, это является. См. Часто задаваемые вопросы на сайте. – sehe

+0

если я просто попробую «gcc main.c», он работает. – proton

ответ

1

в переменной SOURCE_FILES вам не нужен файл заголовка, так как он будет найден компилятором. Вам также нужны qoutes для его работы.

set(SOURCE_FILES "main.c") 
add_executable(exone "${SOURCE_FILES}") 

Кроме того, необходимо установить параметры компилятора с тиром InFront для всех опций компилятора (вы пропустили один для -Wextra)

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wextra -Wall -Wvla -std=c99") 

Теперь ваш CMakeLists.txt должен выглядеть следующим образом

cmake_minimum_required(VERSION 3.3) 
project(exone) 

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wextra -Wall -Wvla -std=c99") 

set(SOURCE_FILES "main.c") 
add_executable(exone "${SOURCE_FILES}") 
+0

Я отредактировал мое сообщение. я использовал -. – proton

+0

@proton Возможно, теперь он работает лучше для вас. – Linus

+0

спасибо! это сработало – proton

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