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

8

我正在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显示编译器的错误或警告?

1
如果 clion 没有显示编译错误,则这是一个 clion 中的 bug。 - fghj
1
使用VERBOSE=yes进行构建,并找到编译器调用的差异。 - arved
当我使用set(CMAKE_VERBOSE_MAKEFILE ON)构建时,我仍然看不到错误。编译器调用是/usr/bin/gcc -Werror -Wall -g -o CMakeFiles/project.dir/src/main.c.o -c /home/glapworth/src/project/project/src/main.c,它是正确的。当从终端运行相同的命令时,我可以清楚地看到编译器错误。看起来标准错误被重定向到CLion中“消息”选项卡之外。 - glapworth
3个回答

5
这里是一个bug报告https://youtrack.jetbrains.com/issue/CPP-6559 不,CLion会显示所有的编译错误。如果有错误,你就不能编译项目。
但是,在构建时,CLion只会将注意事项显示一次,直到您进行清除构建之前,您不会再次看到它们。因为您已经编译了目标文件,如果您没有更改源文件,CLion(CMake)将不会重新构建它们。
CMake认为您知道自己在做什么,不会从头开始重建整个代码库,所以第一次编译后您将不再看到任何提示。

1
如果我理解正确:构建->它显示错误。再次构建,没有警告或错误。然后执行清理,然后构建应该向我显示错误和警告。我尝试过了,但没有。 - glapworth
明白了,这是一个bug。对我来说看起来像是突然断开的链接时间消息,我会…… - strangeqargo
1
@glapworth 这里有一个临时解决方案 https://youtrack.jetbrains.com/issue/CPP-6325 - strangeqargo

1
似乎CLion只在第一次编译时显示错误。如果您意外地进行了第二次编译,则将无法看到错误输出。我已经回到了vim。
但是,如果您想坚持使用CLion,并且遇到了同样的问题,您可以手动构建Makefile;在包含CMakeLists.txt的源目录中,
cmake . make 这将允许您从终端按需编译。
我也倾向于通过编辑CMakeLists.txt将构建目录设置为./bin,以包括以下行:
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bin")

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中清理项目并再次运行它。

使用相同的CMakeLists.txt无法正常工作。第一次编译只会输出错误信息。之后,仅显示编译的一部分,并停在某个位置。这与以前的行为相同。我已经开始通过CLI进行编译,并回到了vim。 - glapworth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接