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