Sample projects for integration testing premake4/premake5 and some modules
- Module CodeBlocks (fixed fork)
- Module CMake (fixed fork)
- Module Ninja
- Module qmake (fixed fork)
gmake | gmake2 | Codelite | Msvc vs2019 | Msvc vs2022 | xcode4 | CodeBlocks | CMake | Ninja | qmake | |
---|---|---|---|---|---|---|---|---|---|---|
location |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️1 | ✔️ | ✔️ | ✔️ | ❔ |
targetdir |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
targetname |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
objdir 23 |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌4 | ✔️ | ❌ |
files |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
includedirs |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
sysincludedirs 5 |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ (Fixed) | ✔️ | ✔️ |
externalincludedirs |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️(Fixed) | ✔️ | ✔️ |
includedirsafter |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌6 | ✔️ | ✔️(Fixed) | ✔️ | ❌ |
forceincludes |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌7 | ✔️ | ✔️ (Fixed) | ✔️ | ❌ |
defines |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
undefines |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | ✔️ | ✔️ | ✔️ |
buildoptions |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
kind "ConsoleApp" |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
kind "SharedLib" |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ (Fixed) | ✔️ | ✔️ |
kind "StaticLib" |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ (Fixed) | ✔️ | ✔️ |
kind "None" |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❔ |
Pch | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | ✔️ | ✔️ | ✔️ |
Pre/post build | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | ✔️ (Fixed) | ✔️ | ❌ |
Prelinkcommand |
✔️ | ✔️ | ❌ | ✔️ | ✔️ | ❌ | ✔️(Fixed)8 | ✔️ (Fixed) | ✔️ | ❌ |
custom build | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️910 | ✔️ (Fixed) | ✔️ | ❌ |
custom rule | ❌ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ✔️10 | ✔️ (Fixed) | ✔️ | ❌ |
per-file config | ❌ | ✔️ | ❌ | ✔️ | ✔️ | ❌ | ❌10 | ❌ | ✔️ | ❌ |
buildaction "Copy" |
❌ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ❌ | ✔️ | ❌ |
buildaction "None" |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ |
flags {"ExcludeFromBuild"} |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
toolset "clang" |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❔ | ✔️ | ❔ |
toolset "gcc" |
✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
toolset "msc" |
❌ | ❌ | ❔ | ✔️ | ✔️ | ❌ | ❔ | ❔ | ✔️ | ❔ |
compileas |
❌ | ✔️ | ❌ | ✔️ | ✔️ | ❌ | ❌10 | ❌ | ✔️ | ❌ |
dependson |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
nuget |
❌ | ❌ | ❌ | ✔️ | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ |
linkgroups |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️(Fixed) | ✔️ | ✔️ | ❌ |
externalproject |
❌ | ❌ | ❌ | ✔️ | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ |
openMP |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | ✔️ | ✔️ | ❌ |
sanitize {"Address"} |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | ✔️(Fixed) | ✔️ | ❔ |
Duplicated source filename | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
unsignedchar |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
- using premake-qt module for all generators but qmake11.
- with Module qmake (fixed fork)
gmake | gmake2 | Codelite | Msvc vs2019 | Msvc vs2022 | xcode4 | CodeBlocks | CMake | Ninja | qmake11 | |
---|---|---|---|---|---|---|---|---|---|---|
basic | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
moc | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️10 | ✔️ | ✔️ | ✔️ |
qrc | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️10 | ✔️ | ✔️ | ✔️ |
ts | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️10 | ✔️ | ✔️ | ❌ |
uic | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Footnotes
-
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 not enabled. ↩ ↩2