On Windows, a .dll is considered by CMake to be a "RUNTIME" Output artifact
if it was added with the `add_library(my_liib SHARED my_lib.cpp), however
if it was added with the MODULE keyword, it is considered to be a "LIBRARY"
output, as stated in the documentation
https://cmake.org/cmake/help/latest/manual/cmake-buildsystem.7.html#runtime-output-artifacts

I just discovered this behavior and it seems quite unintuitive to me.
If I dynamically load a library with LoadLibrary without specying an
absolute path, Windows will still use the default search path logic for
Windows, which means first same directory as the executable loading the
module, e.g. the RUNTIME output directory.
(See also
https://docs.microsoft.com/en-us/windows/desktop/api/libloaderapi/nf-libloaderapi-loadlibrarya
)

Can you please elaborate on this?

Thanks, Kerstin
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake

Reply via email to