From dc58599ef5524ab5bd54126b992a3b2d19be0d30 Mon Sep 17 00:00:00 2001 From: ruki Date: Sun, 14 Aug 2022 21:26:02 +0800 Subject: improve cmakelists --- .../projects/c++/modules/dependence/CMakeLists.txt | 64 +++++++++++++++++----- 1 file changed, 51 insertions(+), 13 deletions(-) (limited to 'tests/projects') diff --git a/tests/projects/c++/modules/dependence/CMakeLists.txt b/tests/projects/c++/modules/dependence/CMakeLists.txt index 19eb7793a..fe09acca6 100644 --- a/tests/projects/c++/modules/dependence/CMakeLists.txt +++ b/tests/projects/c++/modules/dependence/CMakeLists.txt @@ -10,16 +10,60 @@ project(dependence LANGUAGES CXX C) # target add_executable(dependence "") set_target_properties(dependence PROPERTIES OUTPUT_NAME "dependence") -set_target_properties(dependence PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/build/macosx/x86_64/release") +set_target_properties(dependence PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/build/linux/x86_64/release") +add_custom_command(OUTPUT output_dependence_932361E8 + COMMAND echo ${color.build.progress}[ 0%]:${clear} ${color.build.object}generating.cxx.module.bmi mod + VERBATIM +) +add_custom_target(target_dependence_932361E8 + DEPENDS output_dependence_932361E8 +) +add_dependencies(dependence target_dependence_932361E8) +add_custom_command(OUTPUT output_dependence_981BF74C + COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_SOURCE_DIR}/build/.objs/dependence/linux/x86_64/release/src + VERBATIM +) +add_custom_target(target_dependence_981BF74C + DEPENDS output_dependence_981BF74C +) +add_dependencies(dependence target_dependence_981BF74C) +add_custom_command(OUTPUT output_dependence_812F1CA0 + COMMAND /usr/bin/gcc -m64 -std=c++20 -fmodules-ts -fmodule-mapper=${CMAKE_SOURCE_DIR}/build/mapper.txt -x c++ -o ${CMAKE_SOURCE_DIR}/build/.objs/dependence/linux/x86_64/release/src/mod.mpp.o -c ${CMAKE_SOURCE_DIR}/src/mod.mpp + VERBATIM +) +add_custom_target(target_dependence_812F1CA0 + DEPENDS output_dependence_812F1CA0 +) +add_dependencies(dependence target_dependence_812F1CA0) +add_custom_command(OUTPUT output_dependence_A56A2AC8 + COMMAND echo ${color.build.progress}[ 0%]:${clear} ${color.build.object}generating.cxx.module.bmi hello + VERBATIM +) +add_custom_target(target_dependence_A56A2AC8 + DEPENDS output_dependence_A56A2AC8 +) +add_dependencies(dependence target_dependence_A56A2AC8) +add_custom_command(OUTPUT output_dependence_E41992DB + COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_SOURCE_DIR}/build/.objs/dependence/linux/x86_64/release/src + VERBATIM +) +add_custom_target(target_dependence_E41992DB + DEPENDS output_dependence_E41992DB +) +add_dependencies(dependence target_dependence_E41992DB) +add_custom_command(OUTPUT output_dependence_EAE69E5A + COMMAND /usr/bin/gcc -m64 -std=c++20 -fmodules-ts -fmodule-mapper=${CMAKE_SOURCE_DIR}/build/mapper.txt -x c++ -o ${CMAKE_SOURCE_DIR}/build/.objs/dependence/linux/x86_64/release/src/hello.mpp.o -c ${CMAKE_SOURCE_DIR}/src/hello.mpp + VERBATIM +) +add_custom_target(target_dependence_EAE69E5A + DEPENDS output_dependence_EAE69E5A +) +add_dependencies(dependence target_dependence_EAE69E5A) target_compile_options(dependence PRIVATE $<$:-m64> $<$:-m64> - $<$:-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk> - $<$:-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk> - $<$:-fmodules> - $<$:-fbuiltin-module-map> - $<$:-fimplicit-modules> - $<$:-fno-implicit-module-maps> + $<$:-fmodules-ts> + $<$:-fmodule-mapper=${CMAKE_SOURCE_DIR}/build/mapper.txt> ) target_compile_features(dependence PRIVATE cxx_std_20) if(MSVC) @@ -28,16 +72,10 @@ if(MSVC) endif() target_link_options(dependence PRIVATE -m64 - -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk ) target_sources(dependence PRIVATE src/hello_impl.cpp - src/mod_impl.cpp src/main.cpp - src/hello_impl.cpp src/mod_impl.cpp - src/main.cpp - src/mod.mpp - src/hello.mpp ) -- cgit v1.3.1 From 44b5b95dd66578f3ea8c14c96bb36dadb5938a8a Mon Sep 17 00:00:00 2001 From: ruki Date: Sun, 14 Aug 2022 21:43:38 +0800 Subject: optimizate cmakelist --- .../projects/c++/modules/dependence/CMakeLists.txt | 43 ++-------------------- xmake/plugins/project/cmake/cmakelists.lua | 39 +++++++++----------- 2 files changed, 21 insertions(+), 61 deletions(-) (limited to 'tests/projects') diff --git a/tests/projects/c++/modules/dependence/CMakeLists.txt b/tests/projects/c++/modules/dependence/CMakeLists.txt index fe09acca6..4d7715c93 100644 --- a/tests/projects/c++/modules/dependence/CMakeLists.txt +++ b/tests/projects/c++/modules/dependence/CMakeLists.txt @@ -11,54 +11,19 @@ project(dependence LANGUAGES CXX C) add_executable(dependence "") set_target_properties(dependence PROPERTIES OUTPUT_NAME "dependence") set_target_properties(dependence PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/build/linux/x86_64/release") -add_custom_command(OUTPUT output_dependence_932361E8 +add_custom_command(OUTPUT output_dependence_957D597F COMMAND echo ${color.build.progress}[ 0%]:${clear} ${color.build.object}generating.cxx.module.bmi mod - VERBATIM -) -add_custom_target(target_dependence_932361E8 - DEPENDS output_dependence_932361E8 -) -add_dependencies(dependence target_dependence_932361E8) -add_custom_command(OUTPUT output_dependence_981BF74C COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_SOURCE_DIR}/build/.objs/dependence/linux/x86_64/release/src - VERBATIM -) -add_custom_target(target_dependence_981BF74C - DEPENDS output_dependence_981BF74C -) -add_dependencies(dependence target_dependence_981BF74C) -add_custom_command(OUTPUT output_dependence_812F1CA0 COMMAND /usr/bin/gcc -m64 -std=c++20 -fmodules-ts -fmodule-mapper=${CMAKE_SOURCE_DIR}/build/mapper.txt -x c++ -o ${CMAKE_SOURCE_DIR}/build/.objs/dependence/linux/x86_64/release/src/mod.mpp.o -c ${CMAKE_SOURCE_DIR}/src/mod.mpp - VERBATIM -) -add_custom_target(target_dependence_812F1CA0 - DEPENDS output_dependence_812F1CA0 -) -add_dependencies(dependence target_dependence_812F1CA0) -add_custom_command(OUTPUT output_dependence_A56A2AC8 COMMAND echo ${color.build.progress}[ 0%]:${clear} ${color.build.object}generating.cxx.module.bmi hello - VERBATIM -) -add_custom_target(target_dependence_A56A2AC8 - DEPENDS output_dependence_A56A2AC8 -) -add_dependencies(dependence target_dependence_A56A2AC8) -add_custom_command(OUTPUT output_dependence_E41992DB COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_SOURCE_DIR}/build/.objs/dependence/linux/x86_64/release/src - VERBATIM -) -add_custom_target(target_dependence_E41992DB - DEPENDS output_dependence_E41992DB -) -add_dependencies(dependence target_dependence_E41992DB) -add_custom_command(OUTPUT output_dependence_EAE69E5A COMMAND /usr/bin/gcc -m64 -std=c++20 -fmodules-ts -fmodule-mapper=${CMAKE_SOURCE_DIR}/build/mapper.txt -x c++ -o ${CMAKE_SOURCE_DIR}/build/.objs/dependence/linux/x86_64/release/src/hello.mpp.o -c ${CMAKE_SOURCE_DIR}/src/hello.mpp VERBATIM ) -add_custom_target(target_dependence_EAE69E5A - DEPENDS output_dependence_EAE69E5A +add_custom_target(target_dependence_957D597F + DEPENDS output_dependence_957D597F ) -add_dependencies(dependence target_dependence_EAE69E5A) +add_dependencies(dependence target_dependence_957D597F) target_compile_options(dependence PRIVATE $<$:-m64> $<$:-m64> diff --git a/xmake/plugins/project/cmake/cmakelists.lua b/xmake/plugins/project/cmake/cmakelists.lua index 9565bcb40..153e3c4ad 100644 --- a/xmake/plugins/project/cmake/cmakelists.lua +++ b/xmake/plugins/project/cmake/cmakelists.lua @@ -826,8 +826,8 @@ function _get_command_string(cmd, outputdir) end end --- add custom command -function _add_target_custom_command(cmakelists, target, command, suffix) +-- add target custom commands for batchcmds +function _add_target_custom_commands_for_batchcmds(cmakelists, target, outputdir, suffix, batchcmds) if suffix == "before" then -- ADD_CUSTOM_COMMAND and PRE_BUILD did not work as I expected, -- so we need use add_dependencies and fake target to support it. @@ -836,7 +836,12 @@ function _add_target_custom_command(cmakelists, target, command, suffix) -- local key = target:name() .. "_" .. hash.uuid():split("-", {plain = true})[1] cmakelists:print("add_custom_command(OUTPUT output_%s", key) - cmakelists:print(" COMMAND %s", command) + for _, cmd in ipairs(batchcmds:cmds()) do + local command = _get_command_string(cmd, outputdir) + if command then + cmakelists:print(" COMMAND %s", command) + end + end cmakelists:print(" VERBATIM") cmakelists:print(")") cmakelists:print("add_custom_target(target_%s", key) @@ -848,7 +853,12 @@ function _add_target_custom_command(cmakelists, target, command, suffix) if suffix == "after" then cmakelists:print(" POST_BUILD") end - cmakelists:print(" COMMAND %s", command) + for _, cmd in ipairs(batchcmds:cmds()) do + local command = _get_command_string(cmd, outputdir) + if command then + cmakelists:print(" COMMAND %s", command) + end + end cmakelists:print(" VERBATIM") cmakelists:print(")") end @@ -863,12 +873,7 @@ function _add_target_custom_commands_for_target(cmakelists, target, outputdir, s local batchcmds_ = batchcmds.new({target = target}) script(target, batchcmds_, {}) if not batchcmds_:empty() then - for _, cmd in ipairs(batchcmds_:cmds()) do - local command = _get_command_string(cmd, outputdir) - if command then - _add_target_custom_command(cmakelists, target, command, suffix) - end - end + _add_target_custom_commands_for_batchcmds(cmakelists, target, outputdir, suffix, batchcmds_) end end end @@ -888,12 +893,7 @@ function _add_target_custom_commands_for_objectrules(cmakelists, target, sourceb local batchcmds_ = batchcmds.new({target = target}) script(target, batchcmds_, sourcebatch, {}) if not batchcmds_:empty() then - for _, cmd in ipairs(batchcmds_:cmds()) do - local command = _get_command_string(cmd, outputdir) - if command then - _add_target_custom_command(cmakelists, target, command, suffix) - end - end + _add_target_custom_commands_for_batchcmds(cmakelists, target, outputdir, suffix, batchcmds_) end end @@ -907,12 +907,7 @@ function _add_target_custom_commands_for_objectrules(cmakelists, target, sourceb local batchcmds_ = batchcmds.new({target = target}) script(target, batchcmds_, sourcefile, {}) if not batchcmds_:empty() then - for _, cmd in ipairs(batchcmds_:cmds()) do - local command = _get_command_string(cmd, outputdir) - if command then - _add_target_custom_command(cmakelists, target, command, suffix) - end - end + _add_target_custom_commands_for_batchcmds(cmakelists, target, outputdir, suffix, batchcmds_) end end end -- cgit v1.3.1 From d9e3a62bdd4b6390318e0cdebccfe96562c4ef12 Mon Sep 17 00:00:00 2001 From: ruki Date: Sun, 14 Aug 2022 21:47:07 +0800 Subject: optimizate cmakelist --- .../projects/c++/modules/dependence/CMakeLists.txt | 46 ---------------------- 1 file changed, 46 deletions(-) delete mode 100644 tests/projects/c++/modules/dependence/CMakeLists.txt (limited to 'tests/projects') diff --git a/tests/projects/c++/modules/dependence/CMakeLists.txt b/tests/projects/c++/modules/dependence/CMakeLists.txt deleted file mode 100644 index 4d7715c93..000000000 --- a/tests/projects/c++/modules/dependence/CMakeLists.txt +++ /dev/null @@ -1,46 +0,0 @@ -# this is the build file for project -# it is autogenerated by the xmake build system. -# do not edit by hand. - -# project -cmake_minimum_required(VERSION 3.15.0) -cmake_policy(SET CMP0091 NEW) -project(dependence LANGUAGES CXX C) - -# target -add_executable(dependence "") -set_target_properties(dependence PROPERTIES OUTPUT_NAME "dependence") -set_target_properties(dependence PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/build/linux/x86_64/release") -add_custom_command(OUTPUT output_dependence_957D597F - COMMAND echo ${color.build.progress}[ 0%]:${clear} ${color.build.object}generating.cxx.module.bmi mod - COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_SOURCE_DIR}/build/.objs/dependence/linux/x86_64/release/src - COMMAND /usr/bin/gcc -m64 -std=c++20 -fmodules-ts -fmodule-mapper=${CMAKE_SOURCE_DIR}/build/mapper.txt -x c++ -o ${CMAKE_SOURCE_DIR}/build/.objs/dependence/linux/x86_64/release/src/mod.mpp.o -c ${CMAKE_SOURCE_DIR}/src/mod.mpp - COMMAND echo ${color.build.progress}[ 0%]:${clear} ${color.build.object}generating.cxx.module.bmi hello - COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_SOURCE_DIR}/build/.objs/dependence/linux/x86_64/release/src - COMMAND /usr/bin/gcc -m64 -std=c++20 -fmodules-ts -fmodule-mapper=${CMAKE_SOURCE_DIR}/build/mapper.txt -x c++ -o ${CMAKE_SOURCE_DIR}/build/.objs/dependence/linux/x86_64/release/src/hello.mpp.o -c ${CMAKE_SOURCE_DIR}/src/hello.mpp - VERBATIM -) -add_custom_target(target_dependence_957D597F - DEPENDS output_dependence_957D597F -) -add_dependencies(dependence target_dependence_957D597F) -target_compile_options(dependence PRIVATE - $<$:-m64> - $<$:-m64> - $<$:-fmodules-ts> - $<$:-fmodule-mapper=${CMAKE_SOURCE_DIR}/build/mapper.txt> -) -target_compile_features(dependence PRIVATE cxx_std_20) -if(MSVC) - set_property(TARGET dependence PROPERTY - MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") -endif() -target_link_options(dependence PRIVATE - -m64 -) -target_sources(dependence PRIVATE - src/hello_impl.cpp - src/main.cpp - src/mod_impl.cpp -) - -- cgit v1.3.1