version 0.3.28
[fms.git] / CMakeLists.txt
index 3c9997e..6412e14 100644 (file)
@@ -5,7 +5,7 @@ ENDIF(COMMAND CMAKE_POLICY)
 \r
 PROJECT(fms)\r
 \r
-OPTION(USE_BUNDLED_SQLITE "Use the bundled SQLite3 library." OFF)\r
+OPTION(USE_BUNDLED_SQLITE "Use the bundled SQLite3 library." ON)\r
 IF(APPLE)\r
        SET(USE_BUNDLED_SQLITE ON)\r
 ENDIF(APPLE)\r
@@ -131,11 +131,27 @@ ELSE(ALTERNATE_CAPTCHA)
        MESSAGE(STATUS "You are using the old captcha generator.  Add a -D ALTERNATE_CAPTCHA=ON to the command line to use the alternate captcha generator.")\r
 ENDIF(ALTERNATE_CAPTCHA)\r
 \r
+# Get a relative list of include files.\r
+FILE(GLOB_RECURSE FMS_INC RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} include/*.h)\r
+\r
+# Create source groups for all sources and includes, in their original directory structure.\r
+FOREACH(SRC ${FMS_SRC} ${FMS_INC})\r
+       STRING(REGEX REPLACE ${CMAKE_CURRENT_SOURCE_DIR} "Files" REL_DIR "${SRC}")\r
+       STRING(REGEX REPLACE "[\\\\/][^\\\\/]*$" "" REL_DIR "${REL_DIR}")\r
+       STRING(REGEX REPLACE "^[\\\\/]" "" REL_DIR "${REL_DIR}")\r
+       IF(REL_DIR)\r
+               STRING(REPLACE "/" "\\" REL_DIR "${REL_DIR}")\r
+               SOURCE_GROUP(${REL_DIR} FILES ${SRC})\r
+       ELSE(REL_DIR)\r
+               SOURCE_GROUP(Files FILES ${SRC})\r
+       ENDIF(REL_DIR)\r
+ENDFOREACH(SRC)\r
+\r
 IF(NOT I_HAVE_READ_THE_README)\r
        MESSAGE(FATAL_ERROR "You must fully read the readme.txt before continuing.")\r
 ENDIF(NOT I_HAVE_READ_THE_README)\r
 \r
-ADD_EXECUTABLE(fms ${FMS_SRC} ${FMS_PLATFORM_SRC})\r
+ADD_EXECUTABLE(fms ${FMS_SRC} ${FMS_PLATFORM_SRC} ${FMS_INC})\r
 \r
 # link dl - For SQLite3 and shttpd - not for FreeBSD\r
 IF(CMAKE_COMPILER_IS_GNUCC)\r
@@ -181,23 +197,32 @@ IF(ALTERNATE_CAPTCHA)
 ENDIF(ALTERNATE_CAPTCHA)\r
 \r
 IF(POCO_FOUNDATION_LIBRARY)\r
-       TARGET_LINK_LIBRARIES(fms ${POCO_FOUNDATION_LIBRARY})\r
+       # We don't need to explicitly link under MSVC, POCO uses #pragmas to specify linked libraries.\r
+       IF(NOT MSVC)\r
+               TARGET_LINK_LIBRARIES(fms ${POCO_FOUNDATION_LIBRARY})\r
+       ENDIF(NOT MSVC)\r
        ADD_DEFINITIONS(-DPOCO_HAVE_IPv6)\r
        IF(WIN32)\r
                ADD_DEFINITIONS(-DPOCO_STATIC)\r
        ENDIF(WIN32)\r
        IF(POCO_UTIL_LIBRARY)\r
-               TARGET_LINK_LIBRARIES(fms ${POCO_UTIL_LIBRARY})\r
+               IF(NOT MSVC)\r
+                       TARGET_LINK_LIBRARIES(fms ${POCO_UTIL_LIBRARY})\r
+               ENDIF(NOT MSVC)\r
        ELSE(POCO_UTIL_LIBRARY)\r
                MESSAGE(FATAL_ERROR "Could not find system Poco Util library.  You must set the location manually.")\r
        ENDIF(POCO_UTIL_LIBRARY)\r
        IF(POCO_NET_LIBRARY)\r
-               TARGET_LINK_LIBRARIES(fms ${POCO_NET_LIBRARY})\r
+               IF(NOT MSVC)\r
+                       TARGET_LINK_LIBRARIES(fms ${POCO_NET_LIBRARY})\r
+               ENDIF(NOT MSVC)\r
        ELSE(POCO_NET_LIBRARY)\r
                MESSAGE(FATAL_ERROR "Could not find system Poco Net library.  You must set the location manually.")\r
        ENDIF(POCO_NET_LIBRARY)\r
        IF(POCO_XML_LIBRARY)\r
-               TARGET_LINK_LIBRARIES(fms ${POCO_XML_LIBRARY})\r
+               IF(NOT MSVC)\r
+                       TARGET_LINK_LIBRARIES(fms ${POCO_XML_LIBRARY})\r
+               ENDIF(NOT MSVC)\r
        ELSE(POCO_XML_LIBRARY)\r
                MESSAGE(FATAL_ERROR "Could not find system Poco XML library.  You must set the location manually.")\r
        ENDIF(POCO_XML_LIBRARY)\r