我正在为我们的产品构建一个基于 cmake 的构建系统。问题是 cmake 生成的 Visual Studio 项目不会在解决方案浏览器中显示头文件。
我需要在 CMakeList.txt 中添加什么来列出头文件?首选的解决方案是不需要列出每个特定的头文件。
解决方案 这是我带来的解决方案:
file(GLOB_RECURSE INCS "*.h")
add_library(myLib ${SRCS} ${INCS})
谢谢
我正在为我们的产品构建一个基于 cmake 的构建系统。问题是 cmake 生成的 Visual Studio 项目不会在解决方案浏览器中显示头文件。
我需要在 CMakeList.txt 中添加什么来列出头文件?首选的解决方案是不需要列出每个特定的头文件。
解决方案 这是我带来的解决方案:
file(GLOB_RECURSE INCS "*.h")
add_library(myLib ${SRCS} ${INCS})
谢谢
只需将头文件与源文件一起添加:
PROJECT (Test)
ADD_EXECUTABLE(Test test.cpp test.h)
或使用变量:
PROJECT (Test)
SET(SOURCE
test.cpp
)
SET(HEADERS
test.h
)
ADD_EXECUTABLE(Test ${SOURCE} ${HEADERS})
基本技巧是将头文件添加到目标之一(可执行文件或库)。这尤其令人恼火,因为 cmake 已经知道所有的头文件依赖关系,应该为我们处理好这些。您可以使用source_group命令进一步组织它:
source_group("My Headers" FILES ${MY_HDRS})
请注意,您也必须在 Xcode 中做同样的事情。
在为 Qt 项目的构建系统工作时,我遇到了同样的问题,我想出了这个解决方案,这要感谢这个页面上的其他帖子。我包含了一个改编自我的 makefile 的完整示例。希望这可以帮助!
cmake_minimum_required (VERSION 2.6)
project (DemoSolution)
find_package(Qt4 REQUIRED)
include(${QT_USE_FILE})
add_definitions(${QT_DEFINITIONS})
include_directories (../../include/)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
file(GLOB Demo_SOURCES *.cpp)
file(GLOB Demo_HEADERS *.hpp)
file(GLOB Demo_FORMS *.ui)
file(GLOB Demo_RESOURCES resources.qrc)
qt4_wrap_cpp(Demo_MOC ${Demo_HEADERS})
qt4_wrap_ui(Demo_FORMS_HEADERS ${Demo_FORMS})
qt4_add_resources(Demo_RESOURCES_RCC ${Demo_RESOURCES})
source_group("Headers" FILES ${Demo_HEADERS})
source_group("MOC" FILES ${Demo_MOC})
set(QT_USE_QTNETWORK, true)
set(QT_USE_QTSQL, true)
set(QT_USE_QTXML, true)
add_library(Demo SHARED
${Demo_SOURCES}
${Demo_HEADERS}
${Demo_MOC}
${Demo_FORMS_HEADERS}
${Demo_RESOURCES_RCC}
)
target_link_libraries(Demo ${QT_LIBRARIES})
add_definitions(-D_DEMO_EXPORTS)