Clion 1.1.1 使用 CMakeList.txt 添加库 headers 以实现统一

Clion 1.1.1 use CMakeList.txt to add library headers for unity

我以前从未使用过 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":

# 需要隐式依赖的语言集: 设置(CMAKE_DEPENDS_LANGUAGES ) # 每种语言的隐式依赖文件集:</p> <pre><code># 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 内容。我相信这就是它找不到 headers 的原因。问题是我如何告诉 CLion 创建 CMAKE_C_TARGET_INCLUDE_PATH 东西?

我假设您的项目结构是:

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"