| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- try_run
- -------
- Try compiling and then running some code.
- ::
- try_run(RUN_RESULT_VAR COMPILE_RESULT_VAR
- bindir srcfile [CMAKE_FLAGS <Flags>]
- [COMPILE_DEFINITIONS <flags>]
- [COMPILE_OUTPUT_VARIABLE comp]
- [RUN_OUTPUT_VARIABLE run]
- [OUTPUT_VARIABLE var]
- [ARGS <arg1> <arg2>...])
- Try compiling a srcfile. Return TRUE or FALSE for success or failure
- in COMPILE_RESULT_VAR. Then if the compile succeeded, run the
- executable and return its exit code in RUN_RESULT_VAR. If the
- executable was built, but failed to run, then RUN_RESULT_VAR will be
- set to FAILED_TO_RUN. COMPILE_OUTPUT_VARIABLE specifies the variable
- where the output from the compile step goes. RUN_OUTPUT_VARIABLE
- specifies the variable where the output from the running executable
- goes.
- For compatibility reasons OUTPUT_VARIABLE is still supported, which
- gives you the output from the compile and run step combined.
- Cross compiling issues
- When cross compiling, the executable compiled in the first step
- usually cannot be run on the build host. try_run() checks the
- CMAKE_CROSSCOMPILING variable to detect whether CMake is in
- crosscompiling mode. If that's the case, it will still try to compile
- the executable, but it will not try to run the executable. Instead it
- will create cache variables which must be filled by the user or by
- presetting them in some CMake script file to the values the executable
- would have produced if it had been run on its actual target platform.
- These variables are RUN_RESULT_VAR (explanation see above) and if
- RUN_OUTPUT_VARIABLE (or OUTPUT_VARIABLE) was used, an additional cache
- variable RUN_RESULT_VAR__COMPILE_RESULT_VAR__TRYRUN_OUTPUT.This is
- intended to hold stdout and stderr from the executable.
- In order to make cross compiling your project easier, use try_run only
- if really required. If you use try_run, use RUN_OUTPUT_VARIABLE (or
- OUTPUT_VARIABLE) only if really required. Using them will require
- that when crosscompiling, the cache variables will have to be set
- manually to the output of the executable. You can also "guard" the
- calls to try_run with if(CMAKE_CROSSCOMPILING) and provide an
- easy-to-preset alternative for this case.
- Set variable CMAKE_TRY_COMPILE_CONFIGURATION to choose a build
- configuration.
|