Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 29 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,26 +1,49 @@
cmake_minimum_required(VERSION 3.14 FATAL_ERROR)
cmake_minimum_required(VERSION 3.26 FATAL_ERROR)
project(cxxmodules CXX)

set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_EXTENSIONS NO)
set(CMAKE_CXX_STANDARD_REQUIRED YES)
set(CMAKE_CXX_SCAN_FOR_MODULES YES)

# See #10.
# set(CMAKE_CXX_VISIBILITY_PRESET hidden)

set(CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API 2182bf5c-ef0d-489a-91da-49dbc3090d2a)
set(CMake_TEST_CXXModules_UUID "a246741c-d067-4019-a8fb-3d16b0c9d1d3")

if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set(CMAKE_EXPERIMENTAL_CXX_MODULE_DYNDEP 1)
set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FORMAT "clang")
set(CMAKE_EXE_LINKER_FLAGS -lstdc++)
# Workaround for C++Modules: Missing module map flags in exported compile commands
# see https://gitlab.kitware.com/cmake/cmake/-/issues/24618
set(CMAKE_CXX_COMPILE_OBJECT "${CMAKE_CXX_COMPILE_OBJECT} @<OBJECT>.modmap")

elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
set(CMAKE_EXPERIMENTAL_CXX_MODULE_DYNDEP 1)

endif()

include(GenerateExportHeader)
include(CTest)

# include(CTest)
enable_testing()

add_subdirectory(simple)
add_subdirectory(duplicates)
add_subdirectory(duplicates-same-dir)
add_subdirectory(link-use)
add_subdirectory(link-use-mask)
add_subdirectory(good-scanner)
#TODO(CK): add_subdirectory(good-scanner)
add_subdirectory(generated)

add_subdirectory(partitions)
# NOTE: This dit use of CXX_MODULE_INTERNAL_PARTITIONS?
#FIXME: add_subdirectory(partitions)

# The CMake APIs used here are not yet implemented.
#add_subdirectory(header-units)
# The CMake APIs used here are not yet implemented!
# add_subdirectory(header-units)
6 changes: 3 additions & 3 deletions generated/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ function (generate name)
endfunction ()

generate(gen-export.mpp)
generate(gen-import.mpp)
generate(gen-import.cpp)

add_executable(generated)
target_sources(generated
PRIVATE
"${CMAKE_CURRENT_BINARY_DIR}/gen-import.mpp"
use.mpp
"${CMAKE_CURRENT_BINARY_DIR}/gen-import.cpp"
use.cpp
PRIVATE
FILE_SET cxx_modules TYPE CXX_MODULES
BASE_DIRS
Expand Down
File renamed without changes.
File renamed without changes.
4 changes: 2 additions & 2 deletions link-use-mask/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
add_executable(link-use-mask
use.mpp)
use.cpp)
# Should use "simple"'s `M` module since it is first in the link list.
target_link_libraries(link-use-mask
PRIVATE
Expand All @@ -8,7 +8,7 @@ target_link_libraries(link-use-mask
add_test(NAME link-use-mask COMMAND link-use-mask)

add_executable(link-use-mask-reverse
use.mpp)
use.cpp)
# Should use "duplicate"'s `M` module since it is first in the link list.
target_link_libraries(link-use-mask-reverse
PRIVATE
Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion link-use/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
add_executable(link-use
use.mpp)
use.cpp)
target_link_libraries(link-use
PRIVATE
simple)
File renamed without changes.
1 change: 0 additions & 1 deletion partitions/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,5 @@ target_sources(partitions
FILE_SET cxx_modules TYPE CXX_MODULES FILES
module.mpp
parta.mpp
FILE_SET cxx_module_internal_partitions TYPE CXX_MODULE_INTERNAL_PARTITIONS FILES
partb.mpp
impl.mpp)
4 changes: 2 additions & 2 deletions simple/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ add_library(simple)
generate_export_header(simple)
target_sources(simple
PRIVATE
use.mpp
PRIVATE
use.cpp
PUBLIC
FILE_SET headers TYPE HEADERS
BASE_DIRS
"${CMAKE_CURRENT_BINARY_DIR}"
Expand Down
File renamed without changes.