рдкреВрд░рд╛ CMake рдЧрд╛рдЗрдбред рднрд╛рдЧ рддреАрди: рдкрд░реАрдХреНрд╖рдг рдФрд░ рдкреИрдХреЗрдЬрд┐рдВрдЧ


рдкрд░рд┐рдЪрдп


рдпрд╣ рд▓реЗрдЦ рд╡рд┐рднрд┐рдиреНрди рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЗ рдПрдХ рд▓рдЪреАрд▓реЗ рдФрд░ рдмрд╣реБрдореБрдЦреА рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реАрдПрдордХреЗ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИред рдпрд╣ рджреГрдврд╝рддрд╛ рд╕реЗ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЖрдк рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдЧрд▓рдд рд╕рдордЭрдиреЗ рдФрд░ рд╕реАрдПрдордХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдиреБрдЕрд▓ рдХреЗ рдкрд╣рд▓реЗ рдФрд░ рджреВрд╕рд░реЗ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдкрдврд╝реЗрдВред


рд╕реАрдПрдордХреЗ рд▓реЙрдиреНрдЪ


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реАрдПрдордХреЗ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЖрдкрдХреЛ рдЕрднреНрдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореМрдЬреВрджрд╛ рдЖрджреЗрд╢реЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдХреЗ рдФрд░ рдирдП рдЬреЛрдбрд╝рдХрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВред рдЗрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ CMake рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ ред


рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ


рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, CMake рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд╕реНрд╡рдд: рдкрд░реАрдХреНрд╖рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ - рдмрд╕ рдХреБрдЫ рдЖрджреЗрд╢реЛрдВ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп CMakeLists.txt , рдФрд░ рдлрд┐рд░ ctest рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг ctest рдпрд╛ make test ред рдЖрдкрдХреЗ рдирд┐рдкрдЯрд╛рди рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреА рдЬрд╛рдВрдЪ, рд╕реНрдореГрддрд┐ рдХрд╛ рдЧрддрд┐рд╢реАрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рд╣реИред


рд╣рдо рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред Multiply.c рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рд╣реИ:


 #include <stdio.h> #include <stdlib.h> #define ARG_COUNT 3 int main(const int argc, const char *argv[]) { if (argc != ARG_COUNT) { fprintf(stderr, "Error!\n"); return EXIT_FAILURE; } const int first = atoi(argv[1]); const int second = atoi(argv[2]); printf("The result is: %d\n", first * second); return EXIT_SUCCESS; } 

рдпрд╣ рдХреЛрдб рдХрдВрд╕реЛрд▓ рдХреЗ рджреЛ рддрд░реНрдХреЛрдВ рдХреЛ рдЧреБрдгрд╛ рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рд╕реНрдерд┐рддрд┐ рднреА рд╕рдВрднрд╡ рд╣реИ рдпрджрд┐ рддрд░реНрдХ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ: рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рддреНрд░реБрдЯрд┐ рддреНрд░реБрдЯрд┐ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрдЧреА Error! ред


рдЙрд╕реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде CMakeLists.txt рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рд╣реИрдВ:


 cmake_minimum_required(VERSION 3.0) project(MyProgram) add_executable(Multiply Multiply.c) set(MULTIPLY_TIMEOUT 1) #   : enable_testing() #  : add_test(FirstTest Multiply 15 207) add_test(SecondTest Multiply -54 -785) add_test(ThirdTest Multiply 85234) #   : set_tests_properties(FirstTest SecondTest ThirdTest PROPERTIES TIMEOUT ${MULTIPLY_TIMEOUT}) set_tests_properties(FirstTest PROPERTIES PASS_REGULAR_EXPRESSION "The result is: 3105" FAIL_REGULAR_EXPRESSION "Error!") set_tests_properties(SecondTest PROPERTIES PASS_REGULAR_EXPRESSION "The result is: 42390" FAIL_REGULAR_EXPRESSION "Error!") set_tests_properties(ThirdTest PROPERTIES PASS_REGULAR_EXPRESSION "Error!") 

рдЪрд▓реЛ рд╕рдм рдХреБрдЫ рдХреНрд░рдо рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдкрд╣рд▓реЗ рдЪрд╛рд░ рдХрдорд╛рдВрдб рдЖрдкрдХреЛ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЕрдЧрд▓рд╛ enable_testing рдХрдорд╛рдВрдб рдХрдИ рд╕рд╡рд╛рд▓ рдЙрдард╛рддрд╛ рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рдХрдорд╛рдВрдб рдХреЗрд╡рд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рдЖрдкрдХреЗ рдЗрд░рд╛рджреЗ рдХреЗ рд╕реАрдПрдордХреЗ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдХреБрдЫ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЛ рдЖрдкрдХреЛ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддреАрди add_test рд╡рд░реНрддрдорд╛рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдЗрд╕ рдХрдорд╛рдВрдб рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдирд╛рдо рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рдмрд╛рдж рдХреЗ рддрд░реНрдХ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реЗрд▓ рдХрдорд╛рдВрдб рдмрдирд╛рддреЗ рд╣реИрдВред


set_tests_properties рдХрдорд╛рдВрдб рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИред рдкрд░реАрдХреНрд╖рдг рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реВрдЪреА рдХреЗ рдмрд╛рдж, рдХреАрд╡рд░реНрдб PROPERTIES рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ, рдЧреБрдгреЛрдВ рдХреА рд╕реВрдЪреА рдХреА рд╢реБрд░реБрдЖрдд рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реБрдП, рдлреЙрд░реНрдо < > < > рдФрд░ рдЪрдпрдирд┐рдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░реЗрдВред рдЙрдкрд▓рдмреНрдз рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреА рдПрдХ рдкреВрд░реА рд╕реВрдЪреА рдпрд╣рд╛рдВ рд╣реИ ред


рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдЕрдзрд┐рдХрддрдо рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп TIMEOUT рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдмрд╛рдж рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдЕрдкреЗрдХреНрд╖рд┐рдд рдЖрдЙрдЯрдкреБрдЯ PASS_REGULAR_EXPRESSION рдФрд░ FAIL_REGULAR_EXPRESSION рд╕рд╛рде рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ The result is: 3105 рдореИрдЪ, рддреЛ FirstTest рдкрд░реАрдХреНрд╖рдг рдЬрд╛рд░реА рд╣реИ рдФрд░ рдпрджрд┐ рдЬрд╛рд░реА рд╣реИ рддреЛ) рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде Error! рдкрд░реАрдХреНрд╖рдг рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рдлрд▓ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ)ред


рдкрд░реАрдХреНрд╖рдг рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ


enable_testing рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИ - рдпрд╣ include рдХрдорд╛рдВрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ CTest рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╕рдорд╛рд╡реЗрд╢ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЕрдзрд┐рдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рдмреАрдЪ рдЕрднреА рднреА рдЕрдВрддрд░ рд╣реИред


enable_testing рдХрдорд╛рдВрдб рдХрд░рдВрдЯ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА рдХреЗ рд▓рд┐рдП рдФрд░ рд╕рд╛рде рд╣реА рдмрд╛рдж рдХреЗ рд╕рднреА рдХреЗ рд▓рд┐рдП рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рдореВрд▓ CMakeLists.txt рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ CTest рдХреЛ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреА рдЬрдбрд╝ рдореЗрдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдХреА рдЙрдореНрдореАрдж рд╣реИред


CTest рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ CTest / CDash рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ BUILD_TESTING рд╡рд┐рдХрд▓реНрдк рднреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рдордп (рдбрд┐рдлрд╝реЙрд▓реНрдЯ ON ) рд╕рд╣реА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЗрд╕ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИ:


 if(BUILD_TESTING) add_test(FirstTest Test 1) add_test(SecondTest Test 2) add_test(ThirdTest Test 3) #  ... endif() 

рдкрд░реАрдХреНрд╖рдг рдирд┐рд╖реНрдкрд╛рджрди


cmake . && cmake --build . && ctest . рдХрдорд╛рдВрдб рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ cmake . && cmake --build . && ctest . cmake . && cmake --build . && ctest . рд╕рднреА рддреАрди рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред ctest -R <RegularExpression> рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ctest -R ThirdTest рдХреЗрд╡рд▓ рддреАрд╕рд░рд╛ рдЯреЗрд╕реНрдЯ рдЪрд▓рд╛рддрд╛ рд╣реИред


рдкреИрдХреЗрдЬрд┐рдВрдЧ рдЙрджрд╛рд╣рд░рдг


рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ, рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдПрдХ рдкреИрдХреЗрдЬ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╕ install рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдлрд┐рд░ include рдХрдорд╛рдВрдб рдХреЗ CPack рдореЙрдбреНрдпреВрд▓ CPack рд╕рдХреНрд╖рдо рдХрд░рдирд╛ CPack :


 #    "Multiply"   "bin": install(TARGETS Multiply DESTINATION bin) #    : set(CPACK_PACKAGE_NAME "Multiply") set(CPACK_PACKAGE_VENDOR "MyCompany") set(CPACK_PACKAGE_CONTACT "https://myprojectsite.org") set(CPACK_DEBIAN_PACKAGE_MAINTAINER "mycontacts@gmail.com") set(CPACK_PACKAGE_DESCRIPTION "The most stupid program ever written") #    : set(CPACK_GENERATOR "DEB") #    "CPack": include(CPack) 

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, install рдХрдорд╛рдВрдб Multiply рд▓рдХреНрд╖реНрдп рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЗ рдкреИрдХреЗрдЬ рдЬрдирд░реЗрдЯрд░ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХрдорд╛рдВрдбреНрд╕ рд▓рд┐рдЦреЗ рдмрд┐рдирд╛ рдкреИрдХреЗрдЬ рдЬрдирд░реЗрд╢рди рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдИ рдЪрд░ рд╕реЗрдЯ рдХрд░рдХреЗ рдкреИрдХреЗрдЬ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдРрд╕реЗ рдХрдИ рдЪрд░ рд╣реИрдВ рдЬреЛ рдкреИрдХреЗрдЬ рдХреЛ рдареАрдХ рд╕реЗ рдкреИрдХреЗрдЬ рдХрд░рддреЗ рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдкреИрдХреЗрдЬ рдЬрдирд░реЗрдЯрд░ рдХреЛ рдЙрдирдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╕рднреА рдкреИрдХреЗрдЬ рдЬрдирд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдЖрдо рдЪрд░ рдХреА рдПрдХ рд╕реВрдЪреА рдпрд╣рд╛рдБ рдЙрдкрд▓рдмреНрдз рд╣реИ ред


CPACK_GENERATOR рдЪрд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ CPACK_GENERATOR - рдпрд╣ рд╕рдВрдХреБрд▓ рдЬрдирд░реЗрдЯрд░ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ рдЬрд┐рд╕реЗ cpack рдЙрдкрдпреЛрдЧрд┐рддрд╛ рджреНрд╡рд╛рд░рд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдорд╛рди DEB рд▓реЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдЕрд╡рд▓реЛрдХрди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдПрдХ рдбреЗрдмрд┐рдпрди рдкреИрдХреЗрдЬ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред


рдЕрдВрдд рдореЗрдВ, CPack рдореЙрдбреНрдпреВрд▓ CPack , рдкрд╣рд▓реЗ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреИрдХреЗрдЬ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХрдорд╛рдВрдб, рд╕рд╛рде рд╣реА рджреЛ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд▓рдХреНрд╖реНрдп - package рдФрд░ package_source (рдХреНрд░рдорд╢рдГ рдмрд╛рдЗрдирд░реА рдЕрд╕реЗрдВрдмрд▓реА рдФрд░ рд╕реЛрд░реНрд╕ рдЕрд╕реЗрдВрдмрд▓реА) рдХреЛ рдЬреЛрдбрд╝рдирд╛ред


рдкреИрдХрд┐рдВрдЧ рдирд┐рд╖реНрдкрд╛рджрди


cmake . && cmake --build . && cmake --build . --target package рдХрдорд╛рдВрдб рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ cmake . && cmake --build . && cmake --build . --target package cmake . && cmake --build . && cmake --build . --target package cmake . && cmake --build . && cmake --build . --target package_source рдкреИрдХреЗрдЬ рдмрд╛рдЗрдирд░реА рдкреИрдХреЗрдЬ рдФрд░ cmake . && cmake --build . && cmake --build . --target package_source рдХрдорд╛рдВрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрдпрдирд┐рдд рдЬрдирд░реЗрдЯрд░ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ cmake . && cmake --build . && cmake --build . --target package_source cmake . && cmake --build . && cmake --build . --target package_source cmake . && cmake --build . && cmake --build . --target package_source рд░реВрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ рд╕реНрд░реЛрдд рдкреИрдХреЗрдЬ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред


рд╕рдорд╛рдкрди


рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, CMake рдкреВрд░реНрдг рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рд╣реИред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдмрд╣реБрдд рд╕реА рдЙрдкрдпреЛрдЧреА рд╕рд╛рдордЧреНрд░реА рд╕реАрдЦ рд▓реА рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЕрдкрдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреМрд╢рд▓ рдореЗрдВ рднреА рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╣реИ

Source: https://habr.com/ru/post/hi433822/


All Articles