我目前使用的CMake构建一个项目,我有以下问题:CMake的头识别:
我有一个图书馆,说“C”,对于一个可执行的“L”的文件需要使用(L中的文件调用C中库中的头文件)
库和可执行文件都必须在同一个项目中构建,虽然它们都通过CMake很好,但L中的文件不能似乎看到由库C提供的头文件。我不得不在头文件中指定确切目标的相对路径,这根本不好,因为某些文件层次结构可能在某个时间点发生更改。
我不知道使用什么类型的命令,使将L文件直接能看到的C头文件,这样我可以这样说
#include "display.h"
直接L.我不希望有复制标题所有的地方,因为我有很多文件,如L.
我的CMake文件,如下所示:
对于库C(这是更接近文件夹顶部heirarchy):
FIND_PACKAGE(VTK REQUIRED)
IF(NOT VTK_USE_RENDERING)
MESSAGE(FATAL_ERROR "Example ${PROJECT_NAME} requires VTK_USE_RENDERING.")
ENDIF(NOT VTK_USE_RENDERING)
INCLUDE(${VTK_USE_FILE})
#INCLUDE_DIRECTORIES(${CRANIOLIB_SOURCE_DIR}/include)
SET(cranioDir ${CMAKE_CURRENT_SOURCE_DIR})
SET(SOURCES
twoD.cxx
display.cxx
rotate.cxx
symmetry.cxx
normalize.cxx
real_sym_eigens.cxx
debugLib.cxx
readInputLib.cxx)
SET(cranioLib_INCLUDE_DIRS ${CMAKE_INSTALL_PREFIX}/include)
ADD_LIBRARY(cranioLib ${SOURCES})
和可执行L:
FIND_PACKAGE(VTK REQUIRED)
IF(NOT VTK_USE_RENDERING)
MESSAGE(FATAL_ERROR "Example ${PROJECT_NAME} requires VTK_USE_RENDERING.")
ENDIF(NOT VTK_USE_RENDERING)
INCLUDE(${VTK_USE_FILE})
INCLUDE_DIRECTORIES(${cranioDir})
ADD_EXECUTABLE(RotateSS RotateSideToSide.cxx)
TARGET_LINK_LIBRARIES(RotateSS vtkRendering cranioLib vtkHybrid vtkGraphics)
ADD_EXECUTABLE(RotateST RotateSideTwist.cxx)
TARGET_LINK_LIBRARIES(RotateST vtkRendering cranioLib vtkHybrid vtkGraphics)
ADD_EXECUTABLE(RotateUD RotateUpDown.cxx)
TARGET_LINK_LIBRARIES(RotateUD vtkRendering cranioLib vtkHybrid vtkGraphics)
注意,这些文件没有完全做的工作 - 我需要钉“包括” CMake的特点一定的帮助,是不是能够得到网上其他任何会为我做诡计的网站。
最好。
请使用代码按钮或缩进各代码行4个空格所以它会正确地格式化源。 – greyfade 2010-06-24 01:44:16