How to add different directories in CMakeLists.txt?










0














I have source files in src, headers in include and few files in tests directory. The main function (in src) is calling functions which are defined in file from tests.



cmake_minimum_required(VERSION 2.8.9)
project(multiDirTest)
include_directories(include)
set(SOURCES src/app.c tests/test.c)
#file(GLOB SOURCES "src/*.c")
add_executable(hello $SOURCES)


Two files are in different directories (src and tests).
How to make it work ?










share|improve this question





















  • Have you thought about creating two separate targets, one library target for src/app.c and one test executable target + test definintion for test.c? You can then link the test target against the library.
    – KlingonJoe
    Nov 12 at 8:24











  • No. only one target. Actually im just trying out sample example. Here, test.c contains function defination which is called by app.c but both are kept at different places.
    – Akhilesh Sarda
    Nov 13 at 12:38















0














I have source files in src, headers in include and few files in tests directory. The main function (in src) is calling functions which are defined in file from tests.



cmake_minimum_required(VERSION 2.8.9)
project(multiDirTest)
include_directories(include)
set(SOURCES src/app.c tests/test.c)
#file(GLOB SOURCES "src/*.c")
add_executable(hello $SOURCES)


Two files are in different directories (src and tests).
How to make it work ?










share|improve this question





















  • Have you thought about creating two separate targets, one library target for src/app.c and one test executable target + test definintion for test.c? You can then link the test target against the library.
    – KlingonJoe
    Nov 12 at 8:24











  • No. only one target. Actually im just trying out sample example. Here, test.c contains function defination which is called by app.c but both are kept at different places.
    – Akhilesh Sarda
    Nov 13 at 12:38













0












0








0







I have source files in src, headers in include and few files in tests directory. The main function (in src) is calling functions which are defined in file from tests.



cmake_minimum_required(VERSION 2.8.9)
project(multiDirTest)
include_directories(include)
set(SOURCES src/app.c tests/test.c)
#file(GLOB SOURCES "src/*.c")
add_executable(hello $SOURCES)


Two files are in different directories (src and tests).
How to make it work ?










share|improve this question













I have source files in src, headers in include and few files in tests directory. The main function (in src) is calling functions which are defined in file from tests.



cmake_minimum_required(VERSION 2.8.9)
project(multiDirTest)
include_directories(include)
set(SOURCES src/app.c tests/test.c)
#file(GLOB SOURCES "src/*.c")
add_executable(hello $SOURCES)


Two files are in different directories (src and tests).
How to make it work ?







cmake






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 12 at 7:11









Akhilesh Sarda

33




33











  • Have you thought about creating two separate targets, one library target for src/app.c and one test executable target + test definintion for test.c? You can then link the test target against the library.
    – KlingonJoe
    Nov 12 at 8:24











  • No. only one target. Actually im just trying out sample example. Here, test.c contains function defination which is called by app.c but both are kept at different places.
    – Akhilesh Sarda
    Nov 13 at 12:38
















  • Have you thought about creating two separate targets, one library target for src/app.c and one test executable target + test definintion for test.c? You can then link the test target against the library.
    – KlingonJoe
    Nov 12 at 8:24











  • No. only one target. Actually im just trying out sample example. Here, test.c contains function defination which is called by app.c but both are kept at different places.
    – Akhilesh Sarda
    Nov 13 at 12:38















Have you thought about creating two separate targets, one library target for src/app.c and one test executable target + test definintion for test.c? You can then link the test target against the library.
– KlingonJoe
Nov 12 at 8:24





Have you thought about creating two separate targets, one library target for src/app.c and one test executable target + test definintion for test.c? You can then link the test target against the library.
– KlingonJoe
Nov 12 at 8:24













No. only one target. Actually im just trying out sample example. Here, test.c contains function defination which is called by app.c but both are kept at different places.
– Akhilesh Sarda
Nov 13 at 12:38




No. only one target. Actually im just trying out sample example. Here, test.c contains function defination which is called by app.c but both are kept at different places.
– Akhilesh Sarda
Nov 13 at 12:38












2 Answers
2






active

oldest

votes


















0














I just tried with an identical CMakeLists.txt file as yours. The CMakeLists.txt file should be outside all those subdirectories. You can create a build directory out at that level as well, so you have directories



build

include

src

test


Then just issue



cd build

cmake ..



You should still have only one main, despite the two directories. If you want to run tests, you can pass command line arguments into main to indicate to run the tests. In other words, you do not necessarily need a separate main for testing.






share|improve this answer






























    0














    The same thing i was trying. It was able to cmake it successfully but while doing #make it was giving error at




    /root/multi_dir/src/app.c:2:18: fatal error: test.c: No such file or directory

    #include "test.c"




    as i was including file test.c file in app.c (#include "test.c")
    Then i removed "#include "test.c" from app.c and retried. It worked.



    Thanks for response.






    share|improve this answer




















      Your Answer






      StackExchange.ifUsing("editor", function ()
      StackExchange.using("externalEditor", function ()
      StackExchange.using("snippets", function ()
      StackExchange.snippets.init();
      );
      );
      , "code-snippets");

      StackExchange.ready(function()
      var channelOptions =
      tags: "".split(" "),
      id: "1"
      ;
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function()
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled)
      StackExchange.using("snippets", function()
      createEditor();
      );

      else
      createEditor();

      );

      function createEditor()
      StackExchange.prepareEditor(
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader:
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      ,
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      );



      );













      draft saved

      draft discarded


















      StackExchange.ready(
      function ()
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53257366%2fhow-to-add-different-directories-in-cmakelists-txt%23new-answer', 'question_page');

      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      0














      I just tried with an identical CMakeLists.txt file as yours. The CMakeLists.txt file should be outside all those subdirectories. You can create a build directory out at that level as well, so you have directories



      build

      include

      src

      test


      Then just issue



      cd build

      cmake ..



      You should still have only one main, despite the two directories. If you want to run tests, you can pass command line arguments into main to indicate to run the tests. In other words, you do not necessarily need a separate main for testing.






      share|improve this answer



























        0














        I just tried with an identical CMakeLists.txt file as yours. The CMakeLists.txt file should be outside all those subdirectories. You can create a build directory out at that level as well, so you have directories



        build

        include

        src

        test


        Then just issue



        cd build

        cmake ..



        You should still have only one main, despite the two directories. If you want to run tests, you can pass command line arguments into main to indicate to run the tests. In other words, you do not necessarily need a separate main for testing.






        share|improve this answer

























          0












          0








          0






          I just tried with an identical CMakeLists.txt file as yours. The CMakeLists.txt file should be outside all those subdirectories. You can create a build directory out at that level as well, so you have directories



          build

          include

          src

          test


          Then just issue



          cd build

          cmake ..



          You should still have only one main, despite the two directories. If you want to run tests, you can pass command line arguments into main to indicate to run the tests. In other words, you do not necessarily need a separate main for testing.






          share|improve this answer














          I just tried with an identical CMakeLists.txt file as yours. The CMakeLists.txt file should be outside all those subdirectories. You can create a build directory out at that level as well, so you have directories



          build

          include

          src

          test


          Then just issue



          cd build

          cmake ..



          You should still have only one main, despite the two directories. If you want to run tests, you can pass command line arguments into main to indicate to run the tests. In other words, you do not necessarily need a separate main for testing.







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Nov 14 at 11:41

























          answered Nov 14 at 11:26









          Overtime

          265




          265























              0














              The same thing i was trying. It was able to cmake it successfully but while doing #make it was giving error at




              /root/multi_dir/src/app.c:2:18: fatal error: test.c: No such file or directory

              #include "test.c"




              as i was including file test.c file in app.c (#include "test.c")
              Then i removed "#include "test.c" from app.c and retried. It worked.



              Thanks for response.






              share|improve this answer

























                0














                The same thing i was trying. It was able to cmake it successfully but while doing #make it was giving error at




                /root/multi_dir/src/app.c:2:18: fatal error: test.c: No such file or directory

                #include "test.c"




                as i was including file test.c file in app.c (#include "test.c")
                Then i removed "#include "test.c" from app.c and retried. It worked.



                Thanks for response.






                share|improve this answer























                  0












                  0








                  0






                  The same thing i was trying. It was able to cmake it successfully but while doing #make it was giving error at




                  /root/multi_dir/src/app.c:2:18: fatal error: test.c: No such file or directory

                  #include "test.c"




                  as i was including file test.c file in app.c (#include "test.c")
                  Then i removed "#include "test.c" from app.c and retried. It worked.



                  Thanks for response.






                  share|improve this answer












                  The same thing i was trying. It was able to cmake it successfully but while doing #make it was giving error at




                  /root/multi_dir/src/app.c:2:18: fatal error: test.c: No such file or directory

                  #include "test.c"




                  as i was including file test.c file in app.c (#include "test.c")
                  Then i removed "#include "test.c" from app.c and retried. It worked.



                  Thanks for response.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 14 at 12:17









                  Akhilesh Sarda

                  33




                  33



























                      draft saved

                      draft discarded
















































                      Thanks for contributing an answer to Stack Overflow!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid


                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.

                      To learn more, see our tips on writing great answers.





                      Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                      Please pay close attention to the following guidance:


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid


                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.

                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function ()
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53257366%2fhow-to-add-different-directories-in-cmakelists-txt%23new-answer', 'question_page');

                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      這個網誌中的熱門文章

                      Barbados

                      How to read a connectionString WITH PROVIDER in .NET Core?

                      Node.js Script on GitHub Pages or Amazon S3