Sample projects for integration testing premake4/premake5 and some modules
- Module CodeBlocks (fixed fork)
- Module CMake (fixed fork)
- Module Ninja
- Module qmake (fixed fork)
gmakelegacy1 | gmake2 | Codelite | Msvc vs2019 | Msvc vs2022 | xcode4 | CodeBlocks | CMake | Ninja | qmake | |
---|---|---|---|---|---|---|---|---|---|---|
location |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
✔️ | ✔️ | ✔️ | ❔ |
targetdir |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
targetname |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
objdir ℹ️34 |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ⛔5 | ✔️ | ❌ |
files |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
includedirs |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
sysincludedirs 👴6 |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ (Fixed) | ✔️ | ✔️ |
externalincludedirs |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️(Fixed) | ✔️ | ✔️ |
includedirsafter |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌🪲7 | ✔️ | ✔️(Fixed) | ✔️ | ❌ |
forceincludes |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌🪲8 | ✔️ | ✔️ (Fixed) | ✔️ | ❌ |
defines |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
undefines |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | ✔️ | ✔️ | ✔️ |
buildoptions |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
kind "ConsoleApp" |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
kind "SharedLib" |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ (Fixed) | ✔️ | ✔️ |
kind "StaticLib" |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ (Fixed) | ✔️ | ✔️ |
kind "None" |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❔ |
Pch | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | ✔️ | ✔️ | ✔️ |
Pre/post build | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | ✔️ (Fixed) | ✔️ | ❌ |
Prelinkcommand |
✔️ | ✔️ | ❌ | ✔️ | ✔️ | ❌ | ❌(Fixed) |
✔️ (Fixed) | ✔️ | ❌ |
custom build | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
✔️ (Fixed) | ✔️ | ❌ |
custom rule | ❌ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ✔️ |
✔️ (Fixed) | ✔️ | ❌ |
per-file config | ❌ | ✔️ | ❌ | ✔️ | ✔️ | ❌ | ❌ |
❌ | ✔️ | ❌ |
buildaction "Copy" |
❌ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ❌ | ✔️ | ❌ |
buildaction "None" |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ |
flags {"ExcludeFromBuild"} |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
toolset "clang" |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❔ | ✔️ | ❔ |
toolset "gcc" |
✔️ | ✔️ | ✔️ | ⛔ | ⛔ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
toolset "msc" |
❌ | ❌ | ❔ | ✔️ | ✔️ | ❌ | ❔ | ❔ | ✔️ | ❔ |
compileas |
❌ | ✔️ | ❌ | ✔️ | ✔️ | ❌ | ❌ |
❌ | ✔️ | ❌ |
dependson |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
nuget |
❌ | ❌ | ❌ | ✔️ | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ |
linkgroups |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️(Fixed) | ✔️ | ✔️ | ❌ |
externalproject |
❌ | ❌ | ❌ | ✔️ | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ |
openMP |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | ✔️ | ✔️ | ❌ |
sanitize {"Address"} |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | ✔️(Fixed) | ✔️ | ❔ |
Duplicated source filename | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ⛔ |
unsignedchar |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
- using premake-qt module for all generators but qmake ℹ️12.
- with Module qmake (fixed fork)
gmakelegacy1 | gmake2 | Codelite | Msvc vs2019 | Msvc vs2022 | xcode4 | CodeBlocks | CMake | Ninja | qmake ℹ️12 | |
---|---|---|---|---|---|---|---|---|---|---|
basic | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
moc | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
✔️ | ✔️ | ✔️ |
qrc | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
✔️ | ✔️ | ✔️ |
ts | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
✔️ | ✔️ | ❌ |
uic | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Footnotes
-
ℹ️ https://github.com/premake/premake-core/pull/2404 rename gmake into gmakelegacy ↩ ↩2
-
⚠️ project location != workspace/solution location unsupported though. ↩ -
ℹ️ premake appends extra
$(configName)/$(AppName)
. ↩ -
ℹ️ Not tested by the CI even if projects uses them. ↩
-
⛔ cmake doesn't allow to specify
objdir
. ↩ -
👴
sysincludirs
has been deprecated byexternalincludedirs
. ↩ -
🪲 Reported issue: https://github.com/premake/premake-core/issues/2062 ↩
-
🪲 Reported issue: https://github.com/premake/premake-core/issues/1769 ↩
-
⚠️ prelinkcommands is done between prebuildcommand and objects creation and not just before link stage (i.e after objects creation). ↩ -
⚠️ Code::Blocks doesn't support generation of linkable cpp files from header files. ↩ -
⚠️ Code::Blocks doesn't support rules/custom builds which are different by configuration (Using Tokens might allow to bypass that restriction). ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 -
ℹ️ qmake handles Qt natively, so premake-qt is disabled. ↩ ↩2