CLion:启用编译器 errors/warnings
CLion: Enable compiler errors/warnings
我在 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 显示编译器错误或警告?
你必须检查你的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 似乎只在第一次编译时显示错误。如果您不小心进行了第二次编译,您将看不到错误输出。我已经搬回 vim.
但是,如果您想坚持使用 CLion,并且遇到了同样的问题,您可以手动构建 Makefile
;在包含 CMakeLists.txt
的源目录中
cmake .
make
这将允许您从终端按需编译。
我还倾向于通过编辑 CMakeLists.txt
以包含以下行
来将构建目录设置为 ./bin
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bin")
这是错误报告 https://youtrack.jetbrains.com/issue/CPP-6559
不,CLion 显示所有编译错误。如果有错误,则无法编译项目。
但是,CLion 在构建期间只显示一次通知,在您进行干净的构建之前,您将不会再看到它们。因为您已经编译了目标文件,如果您没有更改源文件,CLion (CMake) 将不会重建它们。
CMake 假定您知道自己在做什么,并且不会从头开始重建所有代码库,因此您在第一次编译后不会看到通知 运行。
我在 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 显示编译器错误或警告?
你必须检查你的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 似乎只在第一次编译时显示错误。如果您不小心进行了第二次编译,您将看不到错误输出。我已经搬回 vim.
但是,如果您想坚持使用 CLion,并且遇到了同样的问题,您可以手动构建 Makefile
;在包含 CMakeLists.txt
cmake .
make
这将允许您从终端按需编译。
我还倾向于通过编辑 CMakeLists.txt
以包含以下行
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bin")
这是错误报告 https://youtrack.jetbrains.com/issue/CPP-6559
不,CLion 显示所有编译错误。如果有错误,则无法编译项目。
但是,CLion 在构建期间只显示一次通知,在您进行干净的构建之前,您将不会再看到它们。因为您已经编译了目标文件,如果您没有更改源文件,CLion (CMake) 将不会重建它们。
CMake 假定您知道自己在做什么,并且不会从头开始重建所有代码库,因此您在第一次编译后不会看到通知 运行。