master
txt 37 lines 1.48 KB
Raw
1 set(WSLC_SUBDIRS arguments commands core services tasks)
2 list(TRANSFORM WSLC_SUBDIRS PREPEND ${CMAKE_CURRENT_SOURCE_DIR}/ OUTPUT_VARIABLE WSLC_SUBDIR_PATHS)
3
4 list(TRANSFORM WSLC_SUBDIR_PATHS APPEND /*.h OUTPUT_VARIABLE HEADER_PATTERNS)
5 list(TRANSFORM WSLC_SUBDIR_PATHS APPEND /*.cpp OUTPUT_VARIABLE SOURCE_PATTERNS)
6 file(GLOB_RECURSE HEADERS CONFIGURE_DEPENDS ${HEADER_PATTERNS})
7 file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS ${SOURCE_PATTERNS})
8
9 # Object library for WSLC components.
10 # Used to build the executable and also unit testing components.
11 add_library(wslclib OBJECT ${SOURCES} ${HEADERS})
12
13 target_include_directories(wslclib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${WSLC_SUBDIR_PATHS})
14
15 target_link_libraries(wslclib
16 ${COMMON_LINK_LIBRARIES}
17 yaml-cpp
18 common
19 advapi32
20 crypt32)
21
22
23 target_precompile_headers(wslclib REUSE_FROM common)
24 set_target_properties(wslclib PROPERTIES FOLDER windows)
25
26 # Create wslc.exe
27 # N.B. Linking wslclib (OBJECT library) brings both object files and
28 # transitive dependencies. Do not also use $<TARGET_OBJECTS:wslclib>.
29 add_executable(wslc main.rc resource.h)
30
31 target_link_libraries(wslc wslclib delayimp.lib)
32
33 set_target_properties(wslc PROPERTIES LINK_FLAGS "/DELAYLOAD:msi.dll /DELAYLOAD:WINTRUST.dll")
34 set_target_properties(wslc PROPERTIES FOLDER windows)
35
36 # For prettier source tree browsing
37 source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${SOURCES} ${HEADERS})