[cmake-developers] [CMake] Windows rpath emulation

Nils Gladitz nilsgladitz at gmail.com
Tue Sep 23 03:05:57 EDT 2014


On 09/20/2014 11:53 PM, Nils Gladitz wrote:
> On 20.09.2014 23:31, Roland Schulz wrote:
>> it would be nice if there were a way to emulate rpath under Windows.
>> As far as I can see there are two possible approaches:
>> - Generate a shell script which sets PATH
>> - Generate a manifest for the application and a manifest for the
>> dependencies.
>> http://sourceforge.net/p/mingw-w64/mailman/message/30019971/ has an
>> example of how to do it.

So I am thinking opt-in (target property) wrapper binaries that take the 
place of the actual binaries.

e.g.
   # Initializes ENABLE_EXECUTABLE_WRAPPER target property
   set(CMAKE_ENABLE_EXECUTABLE_WRAPPER ON)

   add_executable(foo foo.cpp)

Could produce
   foo.exe.real        # Actual target binary
   foo.exe.wrapper     # CMake generated configuration file
   foo.exe             # Wrapper binary that reads "foo.exe.wrapper", 
sets up the environment and runs "foo.exe.real"

COMMANDs (add_custom_command()/add_custom_target()/add_test()) could 
transparently call foo.exe (like they would have done without the wrapper).

install(TARGETS) should ignore the wrapper and transparently install and 
rename the real binary.

$<TARGET_FILE> should continue to point at the real binary.
A new $<TARGET_WRAPPER> could point at the wrapper binary.

The wrapper binary itself could be precompiled and included with cmake 
itself. It would determine which configuration to read and which binary 
to run by inspecting its own name.

I primarily had windows native builds in mind.
Are there additional use cases?

Nils




More information about the cmake-developers mailing list