在React中,我可以为我的容器/组件编写这样的代码:
export App from './App/App';
export Chat from './Chat/Chat';
export Home from './Home/Home';
这允许我指定从该目录导出的内容。我可以在CMake
中执行类似的操作吗?
我想要的是能够创建一个包含我要构建的文件的头文件。我不想在CMakeLists.txt
中列出它们,因为它变得太杂乱了。我也不想GLOB_RECURSE
,因为它不允许我选择文件。我该怎么做?
答案 0 :(得分:2)
只需创建列出来源的文件:
<强>的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指出的那样,CMake没有跟踪file(STRINGS)
中使用的文件。也就是说,如果将修改文件的内容(例如,将添加新的源),则需要显式cmake
调用以反映该修改。 (也就是说,简单的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})
这样一来,如果&#34; sources.cmake&#34;将更改cmake
会自动重新运行make
来电。