<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Hi,<div><br></div><div>I have recently found out about CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS which allows</div><div>to easily build a shared library i.e. DLL on Windows. It works great and it is an awesome</div><div>feature however I have run into a warning on Windows (using cmake, ninja, MSVC) because</div><div>my CMakeLists.txt builds both a static and shared library.</div><div><br></div><div>Here is what my CMakeLists.txt does:</div><div><br></div><div><div>if(WIN32)</div><div>        set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)</div><div>endif()</div></div><div><br></div><div>add_library(mylib SHARED ${LIB_SRC})<br></div><div>...</div><div>add_library(mylib STATIC ${LIB_SRC})<br></div><div>...</div><div><br></div><div>This works without any issues on all Unix-like OSes. However on Windows with MSVC I found</div><div>out that building the shared library creates both mylib.dll and mylib.lib. And building the static</div><div>library also creates mylib.lib which causes ninja to issue the following warning:</div><div><br></div><div>ninja: warning: multiple rules generate mylib.lib. builds involving this target will not be correct; continuing anyway [-w dupbuild=warn]<br></div><div><br></div><div>So my question is how to best deal with this warning:</div><div><br></div><div>1) Should I ignore it?</div><div><br></div><div>2) Should I use add_library(... MODULE ...) instead of SHARED on Windows? The ninja</div><div>maintainer's have suggested this when another user reported the issue here:</div><div><a href="https://github.com/ninja-build/ninja/issues/1128#issuecomment-207058115">https://github.com/ninja-build/ninja/issues/1128#issuecomment-207058115</a><br></div><div><br></div><div>One issue I see with this approach is that apparently when building a shared library using</div><div>add_library(... MODULE ...) one should avoid using target_link_libraries(binary mylib)<br></div><div>as mentioned in this stackoverflow answer: <a href="https://stackoverflow.com/a/4968940/363778" target="_blank">https://stackoverflow.com/a/4968940/363778</a></div><div>However the author of the stackoverflow answer also mentions that on Windows you</div><div>could probably still use target_link_libraries(binary mylib)!?</div><div><br></div><div>3) Or is there another known workaround for this issue.</div><div><br></div><div>Thanks,</div><div>Kim</div></div></div></div></div></div></div>