CMAKE QT创建者:将标题文件添加到项目文件中
CMake + Qt Creator: Add header files to project files
如果我在目录src
中有.h
和.cpp
文件,其中.cpp
文件包括.h
文件,则使用CMAKE中的这些命令:
aux_source_directory(src SRC_LIST)
add_executable(${PROJECT_NAME} ${SRC_LIST})
并在QT创建者中打开该cmake文件,在项目文件列表中获取所有文件(源 标题)(默认情况下的文件树)。
现在,另一方面,如果我将所有.h
文件都放在目录include
中,并使用此信息:
include_directories(include)
aux_source_directory(src SRC_LIST)
add_executable(${PROJECT_NAME} ${SRC_LIST})
标题文件从项目文件中消失!
如何将标题文件保存在该目录中,并且仍然在QT Creator的Project Files中列出它们?
您不应将aux_source_directory()
用于任务。该命令是针对不同的东西。只需列出源文件(或将它们放入变量)即可。
您不应该使用include_directory()
来定义其他目录。此命令只会填充编译器的-I
标志。用标头文件定义变量,然后将其添加到可执行文件中。
如果您不想手动列出每个文件,请使用file(GLOB ...)
。但是请注意使用该命令在网络上经常提到的警告。
之后,告诉cmake仅适用于使用include
目录的该标志填充-I
标志。这样,其他目标就不会受到包括的污染,不应使用。
set(SOURCES
src/main.cpp
src/whatever.cpp)
set(HEADERS
include/whatever.h)
add_executable(${PROJECT_NAME} ${SOURCES} ${HEADERS})
target_include_directories(${PROJECT_NAME} PUBLIC include)
我始终添加标头文件,以免出现任何惊喜。但是在MacOS上使用QTCreator 4.2.0和Cmake 3.7.1我无法再现您的问题。
但是,我建议使用以下结构来了解项目中的哪些文件,并在更新cmakelists.txt时触发CMAKE数据的更新。
在project/cmakelists.txt中:
add_subdirectory(src)
include_directory(include)
add_executable(foo ${SRC_LIST})
在项目/src/cmakelists.txt中:
set(SRC_LIST
${SRC_LIST}
${CMAKE_CURRENT_SOURCE_DIR}/a.cpp
${CMAKE_CURRENT_SOURCE_DIR}/b.cpp
PARENT_SCOPE
)
相关文章:
- 如何添加 GetCurrentDirectory 文件?C++[解决]
- 从文本文件在组合框中添加项目
- 如何在 VSCODE 中设置项目文件夹并链接所有 CPP 文件
- 使用 Premake5 构建库,每个构建没有单独的项目文件
- 如何将我的程序添加到文件和文件夹的macOS右键单击菜单?
- 如何在Visual Studio中添加OpenCV文件
- Qt - 为什么Visual Studio 2019在qml资源中添加10Mb文件后无法再编译我的项目?
- CMake 如何强制third_party库将项目文件包含在当前项目源目录中?
- 当包含头文件的文件不在根项目文件夹中时,如何包含它
- Qt创建者:加载位于子目录中的项目文件
- 如何添加mp3文件作为资源,然后播放
- 配置过程项目文件中的错误可能无效
- 哪些 Netbeans 8.2 项目文件应提交到C++项目的版本控制?
- 如何在库项目中添加头文件和 cpp 文件
- 将静态库链接行添加到我的QT项目文件没有区别
- CMAKE QT创建者:将标题文件添加到项目文件中
- 在使用 cmake 构建的项目中添加头文件和.cpp文件
- Android+OpenCV:如何向项目添加.cpp文件
- 如何解决由于在Visual Studio中向c++项目添加.lib文件而导致的链接错误
- 如何在QT项目中添加.exp文件