CLion:启用编译器错误/警告

时间:2016-04-20 15:12:25

标签: cmake clion

我在Ubuntu(16.04)上使用CLion 2016.1.1

编译项目时,CMake输出显示:

/opt/clion/bin/cmake/bin/cmake --build 
/home/glapworth/.CLion2016.1/system/cmake/generated/project_name-f43e0982/f43e0982/Debug --target all -- -j 8
[ 33%] Linking C executable 
/home/glapworth/src/project/project_name/bin/project_name

然而,当我执行:

/opt/clion/bin/cmake/bin/cmake --build /home/glapworth/.CLion2016.1/system/cmake/generated/project_name-f43e0982/f43e0982/Debug --target all -- -j 8

我可以看到编译错误:

...
CMakeFiles/project.dir/src/main.c.o: In function `main':
/home/glapworth/src/project/project_name/src/main.c:22: undefined reference to `curl_global_init'
...

如何让CLion显示编译器错误或警告?

3 个答案:

答案 0 :(得分:3)

这是错误报告https://youtrack.jetbrains.com/issue/CPP-6559

不,CLion显示所有编译错误。如果您有错误,则无法编译项目。

但是,CLion在构建期间只显示一次通知,直到你进行干净的构建,你不会再看到它们。因为您已经编译了目标文件,如果您没有更改源文件,CLion(CMake)将不会重建它们。

CMake假设您知道自己在做什么,并且不会从头开始重建所有代码库,因此在第一次编译运行后您没有看到通知。

答案 1 :(得分:0)

您必须检查CMakeLists.txt。它是什么样子的?您也可以尝试清理代码,工具 - > cmake - >刷新(两个选项)并定期构建Makefile,如果Clion没有告诉您哪些错误,那么您可以使用常规Makefile进行构建。我的CMakeLists.txt看起来像这样

cmake_minimum_required(VERSION 2.8.12)
project(project001)
set(CMAKE_VERBOSE_MAKEFILE on)
file(GLOB SOURCES "./*.c")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -Wall -pedantic")
add_executable(project001 ${SOURCES})
target_link_libraries(project001 readline)

同一项目的Makefile

CC = gcc
GIT_VERSION := $(project001 git describe --abbrev=4 --dirty --always --tags)
CFLAGS := $(CFLAGS) -pedantic -std=c99 -Wall -O3 -ledit -g -DVERSION=\"$(GIT_VERSION)\"

project001: main.o
    $(CC) -o project001 main.o errors.c util.c pipeline.c -ledit

main.o: main.c errors.c util.c

.PHONY: clean
clean:
    rm -f *.o

如果Clion无法编译,那么我会在提示符处修复错误并使用Clion来分析我的代码以便编译没有错误,然后我可以在Clion中清理项目并再次在Clion中运行它。

答案 2 :(得分:0)

似乎CLion仅在第一次编译时显示错误。如果您第二次意外编译,您将无法看到错误输出。我已经回到了vim。

但是,如果您想坚持使用CLion,并且遇到同样的问题,可以手动构建Makefile;在包含CMakeLists.txt

的源目录中

cmake . make

这将允许您从终端按需编译。

我还倾向于通过编辑CMakeLists.txt来将build direct设置为./bin以包含以下行

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bin")