【问题标题】:Clion 1.1.1 use CMakeList.txt to add library headers for unityClion 1.1.1 使用 CMakeList.txt 添加库头以实现统一
【发布时间】:2015-12-03 09:33:13
【问题描述】:

我以前从未使用过 CMake,请见谅。

我的项目有一个“unity”文件夹,其中包含 2.3.0 版的单元测试库)。 unity_fixture.h 包含“#define TEST(...”,其用法如下:

#include "unity_fixture.h" ... TEST(xformatc, Simple) { char output[20]; TEST_ASSERT_EQUAL(13, testFormat(output, "Hello world\r\n")); TEST_ASSERT_EQUAL_STRING("Hello world\r\n", output); }

我将“include_directories(${CMAKE_SOURCE_DIR}/unity)”添加到我的 CMakeLists.txt 文件中。仍然 CLion 没有找到 TEST 的声明,我得到了大量的错误。 我确实尝试使用 set(SOURCE_FILES unity/unity_fixture.h..." 添加所有统一文件,但这也不起作用。

编辑 08.09.2015 我发现了一些奇怪的东西。如果我从命令行调用 cmake,它会创建一个包含以下内容的文件“DependInfo.cmake”:

# The set of languages for which implicit dependencies are needed: set(CMAKE_DEPENDS_LANGUAGES ) # The set of files for implicit dependencies of each language:

# Targets to which this target links.
set(CMAKE_TARGET_LINKED_INFO_FILES
  )

# The include file search paths:
set(CMAKE_C_TARGET_INCLUDE_PATH
  "unity"
  "cmsis/inc"
  "freertos/inc"
  )
set(CMAKE_CXX_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH})
set(CMAKE_Fortran_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH})
set(CMAKE_ASM_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH})

CLion 创建的文件中缺少 CMAKE_C_TARGET_INCLUDE_PATH 内容。我相信这就是它找不到标题的原因。问题是我如何告诉 CLion 创建 CMAKE_C_TARGET_INCLUDE_PATH 东西?

【问题讨论】:

    标签: unity3d cmake clion


    【解决方案1】:

    我假设你的项目结构是:

    project root
    ├── CMakeLists.txt
    ├── Some source files
    └── unity
        └── unity_fixture.h
    

    如果你使用 CMake 来包含文件:

    set(INCLUDE_DIR ./unity)
    include_directories(${INCLUDE_DIR})
    

    您的包含必须是:#include <unity_fixture.h>

    或者您可以不使用 CMake 来包含目录:#include "unity/unity_fixture.h"

    【讨论】:

    • 嗯,我看不出您提出的解决方案与我的解决方案有何不同,但我还是尝试了...不幸的是它没有解决问题:(。我应该在一开始就说该项目结构本身很好。使用 GNU make 可以完美编译。
    • hmm,好的 CMake 使用 <> 而不是 """ 创建 makefile(或等效的东西,取决于操作系统/你说他做什么)是主要修改,其他东西只是为了使您的 CMake 更易于阅读。在 CLion 创建文件后,但在他的个人空间中,~/.clion11/system/cmake/generated 下。目前我不知道出了什么问题,您可以将完整的 CMake/Project 粘贴到此处或使用 github(或类似的东西)吗?
    • 项目在这里:github.com/finklabs/epiclibs 但我没有检查 CMakeLists.txt 文件,因为它已损坏。
    • 我已经尝试过这样做:i.imgur.com/QSbQgYT.png。我不熟悉统一,所以它几乎没有错误。但是 CLion 以这种方式找到了统一性(您可以使用 "" 来包含)。
    • 这行得通。还必须在 SOURCE_FILES 中包含目录和标题。
    猜你喜欢
    • 2021-06-23
    • 2014-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多