Open alexchandel opened 1 year ago
My suggestion would be to run tao_idl in the debugger or use a tool like Sysinternals Process Monitor to watch what's happening when it tries to spawn gperf.
@mitza-oci Good call:
CreateFile
C:\Users\Dev\Git\vplk\build\opt\ACE_wrappers\TAO\src\Debug\ace_gperf.exe\ace_gperf.exe
PATH NOT FOUND
.
It treated the -g path
as a directory. The documentation says it's a file path:
-g path | To specify the path for the perfect hashing program (GPERF). Default is $ACE_ROOT/bin/ace_gperf.
It should probably check if -g path
is the actual ace_gperf
file path before appending a file name, especially if ace_gperf
was compiled to a different executable name for some crazy reason.
I'm not sure why it's adding a \ace_gperf.exe
in be_global.cpp. I've used this before as -g full/path/to/bin/ace_gperf
and I think that was on both platforms.
Weird. I'm using the ACE+TAO 7.0.11 release. Passing the directory -g C:\Users\Dev\Git\vplk\build\opt\ACE_wrappers\TAO\src\Debug
fixed it.
Doesn't happen on macOS. Might be Windows-specific. FYI tao_idl
reports no error or warning on Windows if the -g
path doesn't exist, if it eventually finds GPERF in ACE_ROOT or another fallback location.
Version
ACE 7.0.11 (with CMake additions)
Host machine and operating system
Win11
Compiler name and version (including patch level)
VS2019 / MSVC
The $ACE_ROOT/ace/config.h file
#include "ace/config-windows.h"
The $ACE_ROOT/include/makeinclude/platform_macros.GNU file
None. Building with CMake / MSBuild.
Contents of $ACE_ROOT/bin/MakeProjectCreator/config/default.features
Unchanged.
AREA/CLASS/EXAMPLE AFFECTED:
Invoking
tao_idl
to process IDL files.The problem effects:
ACE/TAO and my application's IDL files.
Synopsis
When
tao_idl.exe
andace_gperf.exe
are successfully built out-of-source (which is required for multi-target/config support), andtao_idl
is invoked with-g path/to/gperf
,tao_idl
merely reports thatGPERF could not be executed
and falls back to dynamic hashing (even if I've ordered it not to fall back using-H perfect_hash
.Description
However TAO_IDL prints no information on why it thinks
GPERF could not be executed
, and its documentation does not mention any diagnostic options.