summaryrefslogtreecommitdiffstats
path: root/Tests/SourceGroups/CMakeLists.txt
blob: 550fe9ed1eb44ef4393088fa4565923b0ae3b877 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
cmake_minimum_required (VERSION 3.8)
project(SourceGroups)

# this is not really a test which can fail
# it is more an example with several source_group()
# commands.
# The created projects have to be loaded manually
# in Visual Studio/Xcode/Eclipse/...
# to see whether the correct groups have been created.

source_group(Base             FILES main.c)

# a sub group
source_group(Base\\Sub1       FILES sub1/foo.c)

# a sub sub group
source_group(Base\\Sub1\\Sub2 FILES sub1/foobar.c)

# a group with empty name
source_group("" FILES foo.c)

# a group, whose name consists only of the delimiter
#should be handled the same way as an empty name
source_group("\\" FILES baz.c)

# a sub sub group whose last component has the same name
# as an already existing group
source_group(Base\\Sub1\\Base FILES bar.c)

# a group without files, is currently not created
source_group(EmptyGroup)

# Forward slashes can be delimiters too
source_group(Base/Nested FILES nested.c)

set(root ${CMAKE_CURRENT_SOURCE_DIR})

set(tree_files_without_prefix ${root}/sub1/tree_bar.c
                              sub1/tree_baz.c
                              sub1/../sub1/tree_subdir/tree_foobar.c)

set(tree_files_with_prefix ${root}/tree_prefix_foo.c
                           tree_prefix_bar.c)

set(tree_files_with_empty_prefix ${root}/tree_empty_prefix_foo.c
                                 tree_empty_prefix_bar.c)

set(tree_files_which_are_actually_directories ${root}
                                              ${root}/
                                              ${root}/sub1
                                              ${root}/sub1/)

source_group(TREE ${root} FILES ${tree_files_without_prefix})

# Should not crash and not add any files - just silently ignore the directories
source_group(TREE ${root} FILES ${tree_files_which_are_actually_directories})

source_group(FILES ${tree_files_with_prefix} PREFIX tree_root/subgroup TREE ${root})

source_group(PREFIX "" FILES ${tree_files_with_empty_prefix} TREE ${root})

add_executable(SourceGroups main.c bar.c foo.c sub1/foo.c sub1/foobar.c baz.c
                            ${tree_files_with_prefix} ${tree_files_without_prefix}
                            ${tree_files_with_empty_prefix} README.txt
                            nested.c)

add_subdirectory(sub2)