[EMAIL PROTECTED] wrote:
I would like to have suggestions/feedback about my usage of CMake for MSVC2005. I have little project with an executable and a dynamic library. I would like to generate either the debug and the release version of the dlls and exes files. So my CMakeLists.txt files looks like:

You should have a top-level CMakeLists.txt file that adds both directories:

PROJECT(MYPROJ)
ADD_SUBDIRECTORY(mylib)
ADD_SUBDIRECTORY(myexe)

Then the executable can directly reference the library target for linking. See below.

CMakeLists.txt  for the library:
#########################################################
PROJECT (LIBRARY)
SET (PRJ_SRCS lib.cpp lib.h)
ADD_DEFINITIONS (-DLIBRARY_EXPORTS)
INCLUDE_DIRECTORIES (..)
ADD_LIBRARY(LIBRARY ${PRJ_SRCS})
SET_TARGET_PROPERTIES(LIBRARY PROPERTIES DEBUG_POSTFIX d)
#ADD -DDEBUG TO THE DEBUG TARGET. THIS DOES NOT WORK! HOW TO ADD -DDEBUG ONLY TO THE DEBUG #TARGET AND NOT TO ANY TARGET? I TRYED TO USE "COMPILE_FLAGS_DEBUG" WITH NO LUCK.
SET_TARGET_PROPERTIES (LIBRARY PROPERTIES COMPILE_FLAGS "-DDEBUG")
#######################################

SET(CMAKE_CXX_FLAGS_DEBUG "-DDEBUG ${CMAKE_CXX_FLAGS_DEBUG}")

A per-configuration version of COMPILE_FLAGS is a good idea though. Please add a feature request here:

http://www.cmake.org/Bug

CMakeLists.txt for the executable:
##############################################
PROJECT(exe)
SET (PRJ_SRCS exe.cpp )
INCLUDE_DIRECTORIES (${CMAKE_CURRENT_SOURCE_DIR}/../LIBRARY/ )
LINK_DIRECTORIES (${CMAKE_CURRENT_SOURCE_DIR}/../LIBRARY/)
ADD_EXECUTABLE (exe WIN32 ${PRJ_SRCS})
TARGET_LINK_LIBRARIES(exe debug kgld optimized kgl)
ADD_DEFINITIONS (-D_CRT_SECURE_NO_DEPRECATE)
######################################

You can skip the LINK_DIRECTORIES command and change the TARGET_LINK_LIBRARIES line to just

TARGET_LINK_LIBRARIES(exe kgl)

if you use the top-level CMakeLists.txt file.

-Brad
_______________________________________________
CMake mailing list
[email protected]
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to