source_group CMake命令不起作用

时间:2015-07-27 11:46:21

标签: cmake

我不理解我的CMakeLists.txt中的source_group命令。 当我这样做时,它有效:

file(GLOB INPUT_HEAD    KeyBoard.h Mouse.h)
source_group("Header Files\\Input" FILES ${INPUT_HEAD})

但这不起作用:

file(GLOB SHADERS ../Shaders/*.txt)
source_group("Source Files\\Shaders" FILES ${SHADERS})

有关如何解决此问题的任何建议? (我已阅读此命令的文档,我不明白为什么这不起作用)

3 个答案:

答案 0 :(得分:10)

您需要使用实际目标中的文件。例如,它们必须在add_libraryadd_executable语句中使用,然后它们将位于该项目中的文件夹中。另外,我使用''/''而不是\\作为分隔符。您可能还希望使用set_property(GLOBAL PROPERTY USE_FOLDERS ON)将预定义的cmake项目放入他们自己的解决方案文件夹中。

答案 1 :(得分:3)

自CMake 3.8起,有一个新命令可以根据相对于特定路径的文件夹结构自动过滤文件。

这是一个小示例,其中SRC_BUILD_FILES是一个包含要过滤的所有文件的集合。筛选是相对于某个基本路径发生的,在此示例中,该基本路径是使用CMAKE_CURRENT_SOURCE_DIR设置的,但可以是任何文件夹。可以将PREFIX名称(此处为 Implementation )设置为您喜欢的名称,并将包含已过滤的设置。

@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
    User user = mDataset.get(position);  
    holder.userNameTextView.setText(user.getUsername());

    String uri = user.getAvatarUri(); // or whatever you want
    Glide.with(holder.itemView.getContext()).load(uri).into(holder.imageView);
}

因此,无需在cmake脚本中浏览或手动重复文件夹名称。

答案 2 :(得分:0)

在现代CMake中,您主要使用目标,以下功能可能会有用:

"ok" : 0,
"errmsg" : "Unknown type name alias: ensuite",
"code" : 2,
"codeName" : "BadValue"