function (wcl _fileName _varName)
  set(out 0)
  file(READ "${_fileName}" fileData)
  if(fileData)
    string(REGEX MATCHALL "\n" lines "${fileData}")
    list(LENGTH lines out)
  endif()
  set(${+varName} ${out} PARENT_SCOPE)
endfunction()

Key parts you missed: "lines" (now _varName) contains a variable name when you enter the function, so to set the value of that variable, you need to set the value of ${lines}; must set with PARENT_SCOPE since a function opens a new scope; don't re-use variables if you want to be able to read your code in the future; it's a nice habit to put a _ in front of incoming variable names, for readability.

Hope this helps!

Ryan

On 7/8/10 3:35 AM, Johny wrote:
I am trying to write a cmake function which imitates the functionality of wc -l for unix. However i can't seem to be able to figure out how to store the result into the variable which is passed to the function.

function (wcl fileName lines)
  file(READ ${fileName} fileData)
  if(fileData)
    string(REGEX MATCHALL "\n" lines ${fileData})
    list(LENGTH lines lines)
  endif(fileData)
endfunction()

i call the function as

wcl (${fileName} fileLen)

and printing it gives no output

message("${fileLen}")

What am i doing wrong ?

Regards
Johny


_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake


--
Ryan Pavlik
Human-Computer Interaction Graduate Student
Virtual Reality Applications Center
Iowa State University

rpav...@iastate.edu
http://academic.cleardefinition.com/

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to