在 React 中,我可以为我的容器/组件编写这样的代码:
export App from './App/App';
export Chat from './Chat/Chat';
export Home from './Home/Home';
这允许我指定我从那个目录导出的东西。我可以在 CMake
中做类似的事情吗?
我想要的是能够创建一个包含我想要构建的文件的头文件。我不想在 CMakeLists.txt
中列出它们,因为它变得太困惑了。我也不想 GLOB_RECURSE
因为它不允许我选择文件。我该怎么做?
最佳答案
只需创建列出来源的文件:
sources.list:
foo.c
bar/baz.c
并使用 file(STRINGS)
命令将其读取到变量中:
CMakeLists.txt:
# Load list of sources into 'sources' variable
file(STRINGS "sources.list" sources)
# Use the variable
add_executable(my_exe ${sources})
正如@wasthishelpful 所指出的,file(STRINGS)
中使用的文件 未被 CMake 跟踪。也就是说,如果文件的内容将被修改(例如,将添加新的源),则需要显式调用 cmake
来反射(reflect)此修改。 (也就是说,简单的 make
不会导致 cmake
重新运行)。
file(STRINGS)
的替代方案,它强制 CMake 跟踪带有源文件的文件。是 include()
:
sources.cmake:
set(sources
"foo.c"
"bar/baz.c"
)
CMakeLists.txt:
# Run additional script, which fills 'sources' variable with list of sources
include(sources.cmake)
# Use the variable
add_executable(my_exe ${sources})
这样一来,如果“sources.cmake”将被更改,cmake
将在 make
调用时自动重新运行。
关于c++ - 我可以创建一个文件来提及我要构建的所有文件 : c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40784757/