CLion是用于C和C ++开发的跨平台IDE。
在 macos 的 CLion 中将编译器设置为 g++-11 时出现问题。 “测试 Cmake 运行已完成,但出现错误”
我希望 MacOS 中的 Clion 使用 g++-11 而不是 Clang 进行编译。当我设置工具链时,它没有通过测试。 Clion 给出“测试 Cmake 运行已完成,但出现错误”。这是屏幕...
尝试在 Clion 中使用 GTest 运行简单的测试。 #包括 测试(a, b) { ASSERT_EQ(1, 1); } int main() { 返回 0; } 总是收到消息“测试框架意外退出...
将 libcurl 添加到 CLion/VS 2022 projekt c++
如何在 CLion (Windows) 中添加 libcurl 库?我从页面下载了 .zip,现在我有curl-8.9.1 文件夹。我以前从未添加过库。我真的很感激一步一步...
当我在 CLion 中构建项目时,它还会刷新我的所有项目文件(实际上是在构建之后) - 如果我有很多项目文件,通过慢速网络从远程服务器安装,那么可以...
我刚刚开始学习 C++ 编程,我使用的书籍重点关注新的模块系统来取代 #include 方法。 对于 make,我找到了允许首先转换 t 的 Makefiles...
除了通过悬停窗口之外,如何使用 CLion 展开宏?上下文菜单中、“代码”或“重构”菜单中似乎都没有这样的操作。我正在寻找基于键盘的...
如何在 CLion IDE 中将 EOF 发送到 STDIN?
在 CLion IDE 中运行 C 程序时,有没有办法将 EOF 发送到 stdin? 我尝试过 Ctrl + D — 它只是关闭程序。 Ctrl + Z 也不起作用。 有什么想法吗? 我使用的是 Windows 10。
我正在尝试制作一个简单的 C++ 程序来播放音乐,但出现此错误。 对 __imp_PlaySoundA' 的未定义引用 从我读到的内容中,我发现我没有任何源代码
所以,例如我有一堆文件: 根目录: 目录-a: 读取.cpp 目录-b: 代码.cpp 库文件 库文件 lib的文件: //lib.cpp #包括 使用命名空间 std; 字符串编辑(...
我在 Windows 中使用 Clion 和默认 CMake。我想使用第三方库,例如 sqlite3 或 openSSL。我将完成本教程。看起来真的很容易,但事实并非如此。我有一个 CMake 问题..我配置了 c...
使用 CMake 将测试文件添加到现有项目中的正确方法是什么?
我有一个包含我实验室作品的 git 存储库。它们都是相互关联的,并且每个都使用另一个的某些东西(例如二叉搜索树实验室工作使用分配器和记录器,其中......
我一直在尝试构建练习代码,但是在步骤之后(通过扫描功能获取坐标) #包括 #包括 #定义圆周率3.1415926535 结构点{ ...
每次我在 CLion 中创建新项目时,默认的 main.cpp 都是这样写的: #包括 int main() { std::cout << "Hello, World!" << std::endl;
如何让 CLion 识别 linux/init.h 和其他 linux 内核头文件?
我正在尝试使用 CLion 进行一些 Linux 内核编程。我观察到一些标题,如 和 被正确识别,但其他一些标题,如 我正在尝试使用 CLion 进行一些 Linux 内核编程。我观察到一些标题,如 <linux/kernel.h> 和 <linux/module.h> 被正确识别,但其他一些标题,如 <linux/init.h> 则未被正确识别。 为了更清楚,这里有一个示例程序: 1 #include <linux/init.h> 2 #include <linux/kernel.h> 3 4 int init_module(void) { 5 printk("initializing"); 6 return 0; 7 } 这里,我的第 1 行和第 5 行以红色突出显示,并带有典型的“未找到文件”/“调用未声明的函数”错误,但第 2 行正确地未突出显示,并且如果我尝试编写链接到该库的内容完全没有问题。 我尝试为我的内核安装最新的标头,即sudo apt install linux-headers-$(uname -r),但它似乎不起作用。我能做什么? 编辑: 输出locate init.h | grep linux/init.h (some thimeshift things...) /usr/src/linux-headers-5.4.0-187/include/linux/init.h /usr/src/linux-headers-5.4.0-189/include/linux/init.h /usr/src/linux-headers-5.4.0-74/include/linux/init.h ...这很好奇,因为我的内核版本是5.4.0-190,并且sudo apt-get install linux-headers-$(uname -r)的输出如下(手动翻译成英文): ... linux-headers-5.4.0-190-generic is already at the most recent version (5.4.0-190.210). ... 编辑: 添加 CMake 文件有点有效 include_directories(/usr/src/linux-headers-5.4.0-187/include/),但这只是一个“补丁”,而不是解决方案,所以我将问题悬而未决,希望得到一些更“明确”的答案 事情没那么简单,有两个主要原因: CLion 想要使用 CMake,因此您必须编写一个自定义 CMakeLists.txt 来查找内核标头并调用 make 来调用内核 Makefile 并使用自定义命令构建模块。这并不容易,因为内核 Makefile 相当复杂,需要正确定义许多变量。 正如您似乎已经发现的那样,通常当前内核的内核头位于 /usr/src/linux-headers-$(uname -r)/。但是,.h C 头文件位于不同的目录中。在 headers 目录中,我知道至少有 4 个不同的包含目录:include、include/generated、arch/XXX/include 和 arch/XXX/include/generated。这些都需要包括在内。 使用 CLion 构建内核模块的 CMakeLists.txt 鉴于上述情况,构建内核模块的 CMakeLists.txt 应该执行以下操作: 查找当前的内核版本(使用 uname -r 命令)。 在 /usr/src/linux-headers-$(uname -r) 找到内核头文件。我们将此路径保存在 KDIR 变量中。 指定要构建的架构。我们将为此设置一个 ARCH 变量。没有简单的方法可以自动执行此操作,因为像 uname -m 这样的命令行工具会输出错误的名称(例如 x86_64 而不是 x86)。 使用 include_directories() 包含适当的目录。 生成 Kbuild(或 Makefile)文件来构建模块。 使用 make 运行自定义 custom_command() 命令来构建模块。 最后,声明一个 dummy_target 目标用于依赖性检查。 最终结果如下: cmake_minimum_required(VERSION 3.28) project(mymod C) set(CMAKE_C_STANDARD 99) add_definitions(-D__KERNEL__ -DMODULE) # Find running kernel release execute_process( COMMAND uname -r OUTPUT_VARIABLE KERNEL_RELEASE OUTPUT_STRIP_TRAILING_WHITESPACE ) set(KDIR "/usr/src/linux-headers-${KERNEL_RELEASE}") set(ARCH "x86") # Check that the headers are installed if (NOT EXISTS "${KDIR}/include/linux/module.h") message(FATAL_ERROR "Kernel headers dir not found: ${KDIR}") endif() # Check that the headers are for the specified arch if (NOT EXISTS "${KDIR}/arch/${ARCH}/include") message(FATAL_ERROR "Arch-specific include dir not found: ${KDIR}/arch/${ARCH}/include") endif() message(NOTICE "Building for arch: ${ARCH}") message(NOTICE "Kernel release: ${KERNEL_RELEASE}") message(NOTICE "Kernel headers: ${KDIR}") # Include generic kernel headers include_directories("${KDIR}/include") include_directories("${KDIR}/include/generated") # Include arch-specific kernel headers include_directories("${KDIR}/arch/${ARCH}/include") include_directories("${KDIR}/arch/${ARCH}/include/generated") # Set some useful variables set(MODULE_NAME mymod) set(SRC_FILE "${MODULE_NAME}.c") set(OBJ_FILE "${MODULE_NAME}.o") set(KO_FILE "${MODULE_NAME}.ko") # Generate Kbuild file in the source directory FILE(WRITE ${CMAKE_CURRENT_SOURCE_DIR}/Kbuild "obj-m := ${OBJ_FILE}") # Custom `make` command used to build the module add_custom_command( OUTPUT ${KO_FILE} COMMAND $(MAKE) -C ${KDIR} modules ARCH=${ARCH} M=${CMAKE_CURRENT_BINARY_DIR} src=${CMAKE_CURRENT_SOURCE_DIR} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} DEPENDS ${SRC_FILE} VERBATIM ) add_custom_target(mymod ALL DEPENDS ${KO_FILE}) add_library(dummy_target "${SRC_FILE}") 上面的CMakeLists.txt可以很好地构建以下mymod.c内核模块: #include <linux/init.h> #include <linux/kernel.h> #include <linux/module.h> int __init myinit(void) { pr_info("Hello World!\n"); return 0; } void __exit myexit(void) { pr_info("Goodbye World!\n"); } module_init(myinit); module_exit(myexit); MODULE_VERSION("0.1"); MODULE_AUTHOR("Marco Bonelli"); MODULE_DESCRIPTION("Test module"); MODULE_LICENSE("GPL 2.0"); 注意,MODULE_LICENSE()是强制性的,如果没有指定许可证,内核Makefile将拒绝构建模块! 最终项目在 CLion 中应如下所示: 注意:Kbuild文件是由CMakeLists.txt自动生成的。您需要写入的唯一两个文件是 CMakeLists.txt 和 mymod.c。 唯一的问题(我不确定如何解决)是,正如您从上面的屏幕截图中看到的那样,CLion 似乎认为它还应该考虑用户空间包含诸如 /usr/include、/usr/x86_64-linux-gnu/include 等目录。这些绝对应该不被考虑用于内核模块,但我不确定如何使用CMakeLists.txt禁用/删除它们。
在 Clion macOS 中通过 CMake 找不到 c++ 头文件和 MacOSX12.1.SDK。但 Xcode 正在工作
我使用的是 macOS Monterey 12.3。 当我尝试在 CLion 上加载 CMAKE 文件时。我收到此错误,它表示找不到 MacOSX12.1.SDK。但我当前的版本是12.3。我不知道为什么会这样......
我无法找到一种方法来为 CLion 导入 glfw 库。我尝试了一些事情,但它们没有按预期工作。我将不胜感激任何帮助。 cmake_minimum_required(版本3.29) 项目(TestProj)...
我的设置: Windows 10 专业版 22H2 (19045.2965) CLion 2020.1.3(JetBrains) WSL2 与 Ubuntu 22.04.2 LTS 海湾合作委员会 11.3.0 cmake 3.22.1 数据库12.1 gmake 4.3 CMakeLists.txt cmake_minimum_required(版本 3...
我正在开发一个STM32 Bluepill 的嵌入式项目。我使用 Stm32CubeIDE 进行开发,但最近我转向了 CLion (Jetbrains),因为我真的很喜欢那个 IDE。然而,我注意到那里’...
我目前正在为我的大学做家庭作业。 我们应该使循环缓冲区线程安全,给定一个带有两个互斥体和两个信号的 struct rbuf。这两个互斥体可以...
这是我第一次使用Boost lib,所以我当然遇到了问题: 首先,这是我的项目的 CMAKELISTS.txt: ============================================= src/CMAKELISTS.txt: ...