[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