2016-09-27 4 views
1

여러 모듈에서 나는 arborescence의이 종류가 있습니다. 내 CPP 파일는 (헤더 전용) cmake

#include "utilities/include/typedefs.h" 

그것은 파일을 찾을 수 없습니다에 포함 할 때 나는

project(Utilities LANGUAGES CXX) 

cmakelist.txt

https://cmake.org/cmake/help/v3.6/command/add_library.html#interface-libraries

내 유틸리티를 사용하여 시도했습니다. 나는 함께 시도했다 : 나는 컴파일러는 #include 구문을 찾을 수 있도록 내 모듈 CMakeList.txt 파일에 어떻게해야합니까 찾을려고

#include "include/typedefs.h" 
#include "typedefs.h" 

(작동하지 않습니다).

최상위 수준이 있습니다

... 
add_subdirectory(utilities) 
add_subdirectory(Module1) 
add_subdirectory(Module2) 
.. 
나는 최상위 cmakelist.txt에 추가

: (작동하지 않습니다)

include_directories("${Utilities_SOURCE_DIR}/include") 

난 이후, 아직 연결하지 않아도 .cpp 파일이 없습니다. 난 다른 모듈에 #include 할 수 있어야합니다.

답변

1

대상과 함께 target_include_directories을 사용해야합니다. 예를 들어
:

#include <typedefs.h> 

를 사용하여 상대 경로 그렇지

다음
target_include_directories(my_target PUBLIC "${Utilities_SOURCE_DIR}/include") 

대상 my_target에 속하는 모든 소스 파일로 헤더에 액세스 할 수 있습니다.

+0

'#include '은 파일을 찾지 못하며'#include "...와 함께 다른 종류의 경로도 찾지 못합니다.하지만 정말 이상합니다. 그것은 CLion과 작동하지만 작동하지 않습니다 QtCreator ... –

+0

@Lorac 나는 QtCreator를 사용합니다. 그것은 흠도 cmake로 만든 다음과 같은 문제가 있지만 빌드를 시작하면 일반적으로 작동합니다. – skypjack