[Cmake-commits] [cmake-commits] king committed CMakeLists.txt NONE 1.1 OutDir.c NONE 1.1 OutDir.cmake NONE 1.1

cmake-commits at cmake.org cmake-commits at cmake.org
Wed Oct 28 13:35:55 EDT 2009


Update of /cvsroot/CMake/CMake/Tests/OutDir
In directory public:/mounts/ram/cvs-serv16580/Tests/OutDir

Added Files:
	CMakeLists.txt OutDir.c OutDir.cmake 
Log Message:
Test per-config OUTPUT_DIRECTORY properties

We test (ARCHIVE|LIBRARY|RUNTIME)_OUTPUT_DIRECTORY_<CONFIG> properties
by building COnly as a subdirectory and setting the properties to put
its files in specific locations.  We build an executable that verifies
the targets actually appear where expected.


--- NEW FILE: CMakeLists.txt ---
cmake_minimum_required(VERSION 2.8)
project(OutDir C)

if(CMAKE_CONFIGURATION_TYPES)
  foreach(config ${CMAKE_CONFIGURATION_TYPES})
    string(TOUPPER "${config}" CONFIG)
    list(APPEND configs "${CONFIG}")
  endforeach()
  set(CMAKE_BUILD_TYPE)
elseif(NOT CMAKE_BUILD_TYPE)
  set(CMAKE_BUILD_TYPE Debug)
endif()

if(CMAKE_BUILD_TYPE)
  string(TOUPPER "${CMAKE_BUILD_TYPE}" configs)
endif()

set(top "${OutDir_BINARY_DIR}")
foreach(config ${configs})
  foreach(type archive runtime library)
    string(TOUPPER "${type}" TYPE)
    set(CMAKE_${TYPE}_OUTPUT_DIRECTORY_${config} "${top}/${type}")
    file(REMOVE_RECURSE "${top}/${type}")
  endforeach()
endforeach()

add_subdirectory(../COnly COnly)

add_custom_command(
  OUTPUT OutDir.h
  COMMAND ${CMAKE_COMMAND} -Dtop=${top} -P ${OutDir_SOURCE_DIR}/OutDir.cmake
  DEPENDS COnly ${OutDir_SOURCE_DIR}/OutDir.cmake
  )
include_directories(${top})
add_executable(OutDir OutDir.c OutDir.h)

--- NEW FILE: OutDir.c ---
#include <OutDir.h>
#include <stdio.h>

int main(void)
{
  const char* files[] = {TESTC1_LIB, TESTC2_LIB, CONLY_EXE, 0};
  int result = 0;
  const char** fname = files;
  for(;*fname;++fname)
    {
    FILE* f = fopen(*fname, "rb");
    if(f)
      {
      printf("found: [%s]\n", *fname);
      fclose(f);
      }
    else
      {
      printf("error: [%s]\n", *fname);
      result = 1;
      }
    }
  return result;
}

--- NEW FILE: OutDir.cmake ---
set(CMAKE_FIND_LIBRARY_PREFIXES "lib" "")
set(CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".a" ".so" ".dylib")

find_library(TESTC1_LIB
  NAMES testc1 testc1_test_debug_postfix
  PATHS ${top}/archive
  NO_DEFAULT_PATH)

find_library(TESTC2_LIB
  NAMES testc2 testc2_test_debug_postfix
  PATHS ${top}/archive ${top}/library
  NO_DEFAULT_PATH)

find_program(CONLY_EXE
  NAMES COnly
  PATHS ${top}/runtime
  NO_DEFAULT_PATH)

file(WRITE ${top}/OutDir.h "/* Generated by ${CMAKE_CURRENT_LIST_FILE} */
#ifndef OutDir_h
#define OutDir_h

#define TESTC1_LIB \"${TESTC1_LIB}\"
#define TESTC2_LIB \"${TESTC2_LIB}\"
#define CONLY_EXE  \"${CONLY_EXE}\"

#endif
")



More information about the Cmake-commits mailing list