Am Donnerstag Februar 23 2006 16:40 schrieb William A. Hoffman: > At 10:43 AM 2/23/2006, Prakash Punnoor wrote: > >Now another question: nasm cannot link code, so what should I write into > >CMAKE_ASM_LINK_EXECUTABLE? It should use the default c/c++/whatever > > linker. > > It should run the link command directly.
Sorry, I don't understand what I should do to correct it. > > >Why does TRY_COMPILE not only compile but also try to link the code? > > Actually compilng only would be enough to run most tests and would also > > be a bit faster if you avoid linking. > > Sometimes that is the only way to make sure something actually compiles and > works. Yes, but therefore we should better have a seperate command like TRAY_COMPILE_AND_LINK or whatever. > >This is now a major problem for me. I really don't want to work-around all > >this troubles.... > > You would have to post your files so that someone might be able to debug > them. Well, there was a link in the first post...but well, these are my current files: cat CMakeASMCompiler.cmake.in SET(CMAKE_ASM_COMPILER "@CMAKE_ASM_COMPILER@") SET(CMAKE_ASM_COMPILER_ARG1 "@CMAKE_ASM_COMPILER_ARG1@") SET(CMAKE_ASM_COMPILER_LOADED 1) SET(CMAKE_ASM_SOURCE_FILE_EXTENSIONS nasm;asm;nas) SET(CMAKE_ASM_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) #SET(CMAKE_ASM_LINKER_PREFERENCE None) IF(UNIX) SET(CMAKE_ASM_OUTPUT_EXTENSION .o) ELSE(UNIX) SET(CMAKE_ASM_OUTPUT_EXTENSION .obj) ENDIF(UNIX) SET(CMAKE_ASM_COMPILER_ENV_VAR "ASM_COMPILER") cat CMakeASMInformation.cmake GET_FILENAME_COMPONENT(CMAKE_BASE_NAME ${CMAKE_ASM_COMPILER} NAME_WE) INCLUDE(Platform/${CMAKE_SYSTEM_NAME}-${CMAKE_BASE_NAME} OPTIONAL) SET (CMAKE_ASM_FLAGS "$ENV{ASMFLAGS} ${CMAKE_ASM_FLAGS_INIT}" CACHE STRING "Flags for ASM compiler.") SET(CMAKE_INCLUDE_FLAG_ASM "-I") IF(NOT CMAKE_ASM_COMPILE_OBJECT) IF(UNIX) SET(CMAKE_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> -f elf <FLAGS> -o <OBJECT> <SOURCE>") ELSE(UNIX) SET(CMAKE_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> -f win32 -DWIN32 <FLAGS> -o <OBJECT> <SOURCE>") ENDIF(UNIX) ENDIF(NOT CMAKE_ASM_COMPILE_OBJECT) IF(NOT CMAKE_ASM_LINK_EXECUTABLE) IF(UNIX) SET(CMAKE_ASM_LINK_EXECUTABLE "<CMAKE_ASM_COMPILER> -f elf <FLAGS> -o <OBJECT> <SOURCE>") ELSE(UNIX) SET(CMAKE_ASM_LINK_EXECUTABLE "<CMAKE_ASM_COMPILER> -f win32 -DWIN32 <FLAGS> -o <OBJECT> <SOURCE>") ENDIF(UNIX) ENDIF(NOT CMAKE_ASM_LINK_EXECUTABLE) MARK_AS_ADVANCED( CMAKE_ASM_FLAGS ) SET(CMAKE_ASM_INFOMATION_LOADED 1) cat CMakeDetermineASMCompiler.cmake IF(NOT CMAKE_ASM_COMPILER) FIND_PROGRAM(CMAKE_ASM_COMPILER NAMES nasm) ENDIF(NOT CMAKE_ASM_COMPILER) MARK_AS_ADVANCED(CMAKE_ASM_COMPILER) # configure variables set in this file for fast reload later on CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/admin/CMakeModules/CMakeASMCompiler.cmake.in ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeASMCompiler.cmake IMMEDIATE) SET(CMAKE_ASM_COMPILER_ENV_VAR "ASM_COMPILER") cat CMakeTestASMCompiler.cmake # This file is used by EnableLanguage in cmGlobalGenerator to # determine that that selected ASM compiler can actually compile # and link the most basic of programs. If not, a fatal error # is set and cmake stops processing commands and will not generate # any makefiles or projects. SET(CMAKE_ASM_COMPILER_WORKS 1 CACHE INTERNAL "") Now try this in CMakeLists.txt. Project(Test ASM C) # check nasm visibility support SET(SOURCE "global _foo:function hidden") FILE(WRITE "${CMAKE_BINARY_DIR}/CMakeTmp/src.nasm" "${SOURCE}") TRY_COMPILE(NASM_HAS_VISIBILITY ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/CMakeTmp/src.nasm OUTPUT_VARIABLE OUTPUT) BTW, the modules in CMAKE_ROOT contain this typo like above: SET(CMAKE_ASM_INFOMATION_LOADED 1) Shouldn't it be INFORMATION? -- (°= =°) //\ Prakash Punnoor /\\ V_/ \_V _______________________________________________ CMake mailing list CMake@cmake.org http://www.cmake.org/mailman/listinfo/cmake