我是否可以创建一个文件来提及我要构建的所有文件:c ++

时间:2016-11-24 11:04:17

标签: c++ cmake

在React中,我可以为我的容器/组件编写这样的代码:

export App from './App/App';
export Chat from './Chat/Chat';
export Home from './Home/Home';

这允许我指定从该目录导出的内容。我可以在CMake中执行类似的操作吗?

我想要的是能够创建一个包含我要构建的文件的头文件。我不想在CMakeLists.txt中列出它们,因为它变得太杂乱了。我也不想GLOB_RECURSE,因为它不允许我选择文件。我该怎么做?

1 个答案:

答案 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来电。