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 :).
Specify libraries or flags to use when linking a given target and/or its dependents. Usage requirements from linked library targets will be propagated. Usage requirements of a target's dependencies affect compilation of its own sources.
Specify directories in which the linker will look for libraries. Specify the paths in which the linker should search for libraries. The command will apply only to targets created after it is called. Relative paths given to this command are interpreted as relative to the current source directory, see CMP0015.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With