Issue
I have a vs2008 project here. Its project files are generated by CMake. What I want to do is define libraries and library directories for the Debug and Release target independently, i.e. release libs for the release target and debug libs for the debug target of course.
So far I have no idea how to do this. I know I can define different compiler arguments with CMAKE_CXX_FLAGS_DEBUG and CMAKE_CXX_FLAGS_RELEASE for example (or however the build targets are named), but I have no idea how to do this for link dirs and libs.
A colleague who created the CMakeLists file with all the definitions tried it with
IF( CMAKE_BUILD_TYPE MATCHES "Debug" )
for example, but that doesn't work. According to some CMake wiki, the variable CMAKE_BUILD_TYPE is not defined at configuration time, only at run time, depending on what target you are running, naturally.
Currently I am sort of at a dead end and would appreciate any hints or directions :).
Solution
There is a target_link_libraries
option that helps you to do that. But you will need to expand your library name to full path.
target_link_libraries(foo
debug c:/path/to/debug/lib/blah.lib
optimized c:/path/to/optimized/lib/blah.lib)
If your library location is named the way CMake do it (Debug/MinSizeRel/RelWithDebInfo/Release), you can use the VS $(ConfigurationName)
variable:
link_directories(c:/path/to/all/libs/$(ConfigurationName)/)
Beware, $(ConfigurationName)
is not a cmake variable: it will only be expanded by VS during the build/link step.
Answered By - tibur