CMAKE:配置有多个目录的Cmake
背景
我正在尝试学习Cmake,并且我一直在尝试通过在每个目录中使用单个cmakelists.txt文件来学习如何构建系统。一个值得注意的是main.cpp #includes 敌人
。我的文件结构的简化版本看起来像这样的结构:
mainfolder
|
|---- build
| |---- CMake stuff
|---- enemy
| |
| |---- enemy.cpp
| |---- enemy.h
| |---- CMakeLists.txt
|
|---- fighter.h
|---- fighter.cpp
|---- main.cpp
|---- CMakeLists.txt
这是我的cmakelists.txt文件:
mainfolder/cmakelists.txt
cmake_minimum_required(VERSION 3.0)
project (game)
add_subdirectory(enemy)
set(HEADERS
fighter.h
)
set(SOURCES
main.cpp
fighter.cpp
)
add_executable(${PROJECT_NAME} ${SOURCES} ${HEADERS})
target_link_libraries(${PROJECT_NAME} enemy)
mainfolder/noye/eyne/cmakelists.txt
add_library(enemy enemy.cpp enemy.h)
target_include_directories(enemy PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(enemy )
< Strong>问题/我尝试的
我无法构建系统,我疯狂地迷失了。我目前所示的尝试是基于此但是我也尝试简单地
target_include_directories(${PROJECT_NAME} PUBLIC enemy)
target_link_directories(${PROJECT_NAME} PRIVATE enemy)
target_link_libraries(${PROJECT_NAME} enemy)
在 ainfolder/cmakelists.txt and and add_library(敌人.txt ,如在6:50左右所示,此视频。使用此配置,
cmake ..
有效,但是我遇到了一个错误,YENER.H
与main.cpp不存在。
这个错误对我来说意味着编译器仍然找不到敌人
。我想我只能写#include“敌人/敌人。正确实现这些多层cmakelists.txt文件?
Background
I'm trying to learn CMake, and I've been trying to learn how to build my system by having individual CMakeLists.txt files in each directory. One note is that main.cpp #includes enemy.h
. A simplified version of my file structure looks like this structure looks like this:
mainfolder
|
|---- build
| |---- CMake stuff
|---- enemy
| |
| |---- enemy.cpp
| |---- enemy.h
| |---- CMakeLists.txt
|
|---- fighter.h
|---- fighter.cpp
|---- main.cpp
|---- CMakeLists.txt
Here are my CMakeLists.txt files:
mainfolder/CMakeLists.txt
cmake_minimum_required(VERSION 3.0)
project (game)
add_subdirectory(enemy)
set(HEADERS
fighter.h
)
set(SOURCES
main.cpp
fighter.cpp
)
add_executable(${PROJECT_NAME} ${SOURCES} ${HEADERS})
target_link_libraries(${PROJECT_NAME} enemy)
mainfolder/enemy/CMakeLists.txt
add_library(enemy enemy.cpp enemy.h)
target_include_directories(enemy PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(enemy )
Problem/What I've Tried
I can't the system to build, and I am wildly bamboozled and lost. My current attempt as shown is based on this this post, but I've also tried to simply have
target_include_directories(${PROJECT_NAME} PUBLIC enemy)
target_link_directories(${PROJECT_NAME} PRIVATE enemy)
target_link_libraries(${PROJECT_NAME} enemy)
In mainfolder/CMakeLists.txt and and add_library(enemy enemy.h enemy.cpp)
in mainfolder/enemy/CMakeLists.txt and as shown at around 6:50 in this video. With this configuration, cmake ..
works, but I get an error that enemy.h
doesn't exist in relation to main.cpp.
That error implies to me that the compiler still can't find enemy.h
. I suppose I could just write #include "enemy/enemy.h
in main.cpp
, but that seems like it would defeat the purpose of CMake. Any suggestions on how to implement these multi-layered CMakeLists.txt files correctly?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我尚未使用CMAKE测试,并从内存中打印出来。该模板通常使用。
mainfolder/cmakelists.txt
mainfolder/敌人/cmakelists.txt
I haven't tested it with cmake, printed from memory. The template is commonly used.
mainfolder/CMakeLists.txt
mainfolder/enemy/CMakeLists.txt