Hi,
I have a question about the HelloWorld example on webpage :"Building a simple MDL Application"
When I try to build it, I get the error:
MicroStation Resource Compiler 03.19.02 BMAKE: no rules to build C:\PROGRA~1\Bentley\MICROS~1\MICROS~1\mdlapps\ BMAKE: call trace line: 55, C:\PROGRA~1\Bentley\MICROS~2\examples\Elements\HELLOW~1\HELLOW~1.MKE
What did I do wrong?
Thanks in advance for the help.
Tell us the version (e.g. v10.x.y.z) of MicroStation that you are using.
Casper Roubos said:What did I do wrong?
It's hard to say with no evidence. What is on line 55 of your bmake file? It's probably best if you post the complete .mke file here.
.mke
You might also like to compare your project with the C++ examples delivered with the SDK. Can you build those successfully?
Regards, Jon Summers LA Solutions
Here is the MKI-file. It is a copy-paste of the webpage.
Casper Roubos said:Here is the MKI-file
I asked for your bmake (*.mke) file, not an .mki file or a screenshot. Use the Insert image/file/video button to attach a file.
*.mke
.mki
#-------------------------------------------------------- # MstnCE HelloWorld.mke #-------------------------------------------------------- PolicyFile = MicroStationPolicy.mki DEFAULT_TARGET_PROCESSOR_ARCHITECTURE=x64 appName=HelloWorld appObjs = $(o)$(appName)$(oext) appRscs = $(o)$(appName).rsc baseDir = $(_MakeFilePath) mdlLibs = $(MSMDE)library/ %include mdl.mki #-------------------------------------------------------- # Create needed output directories if they don't exist #-------------------------------------------------------- always: ~mkdir $(o) ~mkdir $(rscObjects) ~mkdir $(reqdObjs) #-------------------------------------------------------- # Define macros for files included in our link and resource merge #-------------------------------------------------------- DLM_NO_SIGN = 1 DLM_OBJECT_DEST = $(o) DLM_NAME =$(appName) DLM_NO_DLS = 1 DLM_NO_DEF = 1 DLM_NOENTRY = 1 DLM_NO_MANIFEST = 1 DLM_DEST = $(mdlapps) LINKER_LIBRARIES = $(mdlLibs)bentley.lib\$(mdlLibs)mdlbltin.lib\$(mdlLibs)BentleyGeom.lib\$(mdlLibs)DgnPlatform.lib #-------------------------------------------- # Create command table and header file #-------------------------------------------- #$(baseDir)$(appName)cmd.h:$(baseDir)$(appName)cmd.r #$(o)$(appName)cmd.rsc: $(baseDir)$(appName)cmd.r #----------------------------------------------------------------------- # Generate resource files #----------------------------------------------------------------------- $(o)$(appName).rsc: $(baseDir)$(appName).r #---------------------------------------------------------------------- # Generate MA #---------------------------------------------------------------------- $(mdlapps)$(appName).ma : $(appRscs) $(msg) > $(o)make.opt -o$@ $(appRscs) < $(RLibCmd) @$(o)make.opt ~time #----------------------------------------------------------------------- # Builds any necessary CODE modules and link them to DLL #----------------------------------------------------------------------- $(o)$(appName)$(oext):$(baseDir)$(appName).cpp %include dlmlink.mki
Yes, I am currently trying with Winmerge to determine the diffences with an example "CellExplorer" supplied with the SDK.
The SDK-examples do work in my environment.
I use [MicroStation CONNECT Edition SDK (v10.14.00.109, Elevated User, 64-bit) [REQUIRES: Visual Studio 2017, .NET Framework 4.6.2]
So when you look the example on the webpage you don't see a problem? Or could it a bug with Update 14 alone?
Sorry for the wait for the MKE. I had to change it to txt
Your screen shot is not the file Jon requested. It is actually not a file at all.
MaryB
Power GeoPak 08.11.09.918Power InRoads 08.11.09.918OpenRoads Designer 2021 R2
Casper Roubos said:Or could it a bug with Update 14 alone?
I think such question makes no sense. When you are able to compile (and run) examples delivered with MicroStation SDK CE U14, the problem cannot be in MicroStation CE U14.
Casper Roubos said:So when you look the example on the webpage you don't see a problem?
I do not see any webpage. You provided a capture of a part of some file, looking like mki or mke file. It's not enough for any analysis.
To analyze what can be wrong, typically required are:
Even more useful is to create compilation log using build verbose command and to share this log. When you will analyze this log yourself, you will probably find better understand where the problem is.
Regards,
Jan
Bentley Accredited Developer: iTwin Platform - AssociateLabyrinth Technology | dev.notes() | cad.point
Casper Roubos said:Sorry for the wait for the MKE. I had to change it to txt
BMake files (*.mke, *.mki) are plain text files. There's nothing to convert!
*.mki
You've made me suspicious: what editor are you using to write your bmake (*.mke) file?
Thanks I'll look into the VERBOSE output.The MKE-file is now in the earlier reply as a file-upload. Now you should be able to look into it
This file and the HelloWorld example is from a howto on the communities-webpage : https://communities.bentley.com/products/programming/microstation_programming/w/wiki/52106/building-a-simple-mdl-application
I cannot seem to get it working, while the SDK-examples work ok.
If you have a tip, I would be most gratefull.
I use UltraEdit as editor
Casper Roubos said:If you have a tip, I would be most gratefull.
As I wrote: Create verbose output and share it. It's the most detail description what is happening.
Make file depends on shell settings, works with your source files and creates another. So any error message can be cause by missing file, file placed into wrong folder (so a tool used in the next step does not find it), using wrong extension and many other reasons.
Casper Roubos said:Now you should be able to look into it
Based on very quick check: It looks a bit weird, because of extra spaces and indenting.
Makefiles, which is not specific to bmake, are based on indentation to define what is macro name, rule, dependency etc.
I see in your makefile:
$(mdlapps)$(appName).ma : $(appRscs) $(msg) > $(o)make.opt -o$@ $(appRscs) < $(RLibCmd) @$(o)make.opt ~time
But in SDK examples, which is correct definition, is:
$(mdlapps)$(appName).ma : $(maRscs) $(msg) > $(rscObjects)make.opt -o$@ $(maRscs) < $(RLibCmd) @$(rscObjects)make.opt ~time
These two definition are completely different!
I recommend to study Creating a Makefile and Using the bmake Utility chapter in MicroStatioAPI help file. Makefile syntax is not complicated, but unfortunately also not intuitive (which is common to all make definitions).
With regards,
There should be a blank line AFTER line 67. Blank line means using a default rule in *.mki files.
I have corrected original wiki article for this error.
Thanks for the aditional topics and for the adjustments.
However I did get an error when I add the blank line and it did work without one.
Nevertheless thanks!