moin moin
moin moin

Reputation: 2453

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

I never used CMake before so please excuse me.

My project has a "unity" folder that contains version 2.3.0 of the unit test library). unity_fixture.h contains "#define TEST(..." which is used like the following:

#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); }

I added "include_directories(${CMAKE_SOURCE_DIR}/unity)" to my CMakeLists.txt file. Still CLion does not find the declaration of TEST and I get tons of errors. I did try to add all the unity files with set(SOURCE_FILES unity/unity_fixture.h..." but this did not work either.

edit 08.09.2015 I found out something strange. If I call cmake from command line it creates a file "DependInfo.cmake" with the following contents:

# 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})

The CMAKE_C_TARGET_INCLUDE_PATH stuff is missing in the file that is created by CLion. I believe that is the reason why it does not find the headers. Question is how do I tell CLion to create the CMAKE_C_TARGET_INCLUDE_PATH stuff?

Upvotes: 0

Views: 1071

Answers (1)

Waxo
Waxo

Reputation: 1976

I assume that your project structure is :

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

If you use CMake to include files :

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

Your include must be : #include <unity_fixture.h>

Or you can use without using CMake to include directories : #include "unity/unity_fixture.h"

Upvotes: 1

Related Questions